0

私はテスト、ジャスミン、Javascript が初めてなので、この質問は些細なことかもしれません。Jasmine で関数をテストする必要があります。

define(["module", ...], function(Module, ...){
    //...
    action: function(){
        //...
        Backbone.history.navigate('companies', {trigger: true});
        //...
    }
}

テストは次のようになります。

describe("function action", function() {
    it ("calls Backbone.history.navigate()", function(){
        spyOn(module, "Backbone.history.navigate");
        module.action();
        expect(Backbone.history.navigate()).toHaveBeenCalled();
    });
});

しかし、これはうまくいきません。それは言います:

Error: Backbone.history.navigate() method does not exist

そのメソッドをスパイできるようにするには、どうすればよいですか? その関数を実行する前に backbone.js ファイルをロードしようとしましたが、何も変わりませんでした。

4

2 に答える 2

3

あなたは書くかもしれません

spyOn( Backbone.history, 'navigate' );

その後

expect( Backbone.history.navigate ).toHaveBeenCalled();

それに対する潜在的な欠点は、テストを並行して実行し、あるテストでBackbone.history.navigateスパイされ、別のテストで使用されている場合、期待した結果が得られない可能性があることです。

于 2015-04-20T08:48:49.437 に答える
0

次のことを試してみてください

var backbone_historySpy=spyOn(Backbone,'history.navigate');
describe('testing function action:',function(){
it('expect Backbone.history.navigate() to be called',function(){
module.action();
expect(backbone_historySpy).toHaveBeenCalled();
});
});

それはうまくいくはずです

于 2015-04-20T08:59:32.027 に答える