2017-02-07 8 views
0

をテスト中にこんにちは、私は作品を持って、私は変更をチェックする挿入(SpyOn 2回)jQueryの値ジャスミンが

spyOn($.fn, "val").and.returnValue("Bar"); 
$("#newFoodtype").val() 
spyOn($.fn, "val").and.returnValue("Foo"); 
$("#newFoodtype").val() 

を設定すると、次のテストに

it("should add a model", function() { 

    spyOn($.fn, "val").and.returnValue("Bar"); 

    foodtype.addNewFoodtype(); //My view 
    expect($("#newFoodtype").val()).toEqual("Bar"); 
    expect(foodtype.collection.length).toEqual(1); 

}); 

をテストしたが、エラーを持っています

Error: spyOn : val has already been spied upon Usage: spyOn(object, methodName)

答えて

1
  • あなただけの新しい値を返す代わりにする必要がありますもう一度それを覗いている。
  • コードを変更して動作させる方法は次のとおりです。
  • 私はあなたのビューを模倣するダミービューfoodtypeを使用していたことに注意してください、私はもう一度 spyObj.and.returnValue("Foo");
  • にアクセスできるようにスパイする変数を割り当てます。

    var foodtype = { 
        addNewFoodtype: function() { 
        $("#newFoodtype").val("some val"); 
        this.collection.push("some val"); 
        }, 
        collection: [] 
    } 
    describe("multispy demo", function() { 
        it("should add a model", function() { 
        var spyObj = spyOn($.fn, "val").and.returnValue("Bar"); 
        foodtype.addNewFoodtype(); //My view 
        expect($("#newFoodtype").val()).toEqual("Bar"); 
        expect(foodtype.collection.length).toEqual(1); 
        spyObj.and.returnValue("Foo"); 
        expect($("#newFoodtype").val()).toEqual("Foo"); 
        }); 
    
    }); 
    
関連する問題