5

a がclick() メソッドによって呼び出されるJasmineことを確認するテストを作成しています。私のロジックはどこが間違っていますか? jquery 関数またはカスタム関数をスパイしますか?functionJQuery

次のようなエラーが表示されます。

-エラー

Expected a spy, but got undefined. in http://localhost:8080/...etc.../jasmine.js (line 1253)

-コード

describe("funtionCalled", function() {
it("calls the click() function", function() {
    var cc = new CustomClass();
    spyOn($.fn, "click");
    $( '#fieldID' ).click();
    expect(cc.clickFunction()).toHaveBeenCalled();
   });
});

-テスト中のコード

var CustomClass = function(){};

$(document).ready(function(){
    var cf = new CustomClass();

    $( '#fieldID' ).click(function() {  
        cf.clickFunction();
    });
});

CustomClass.prototype.clickFunction = function() {
     //some javascript code
};
4

2 に答える 2

7

私の知る限り、ここでは2つの間違いがあります。最初に間違ったオブジェクトをスパイし、次にclickFunction実際のメソッドではなく、メソッドの結果をexpectに渡します。

これを試して:

describe("funtionCalled", function() {
    it("calls the click() function", function() {
        var cc = new CustomClass();

        spyOn(cc, "clickFunction"); 
        // Notice how you pass a real object and a method name to spyOn

        $('#fieldID').click();

        expect(cc.clickFunction).toHaveBeenCalled();
        // Notice how you pass the method, and not the method call result
    });
});

スパイの詳細については、jasminewikiを参照してください。

于 2011-07-14T14:32:19.100 に答える
2

jasmine-sinon ヘルパーが不足している可能性があります。https://github.com/froots/jasmine-sinonを参照してください。

于 2012-06-01T14:18:38.633 に答える