在Jasmine测试期间插入(SpyOn 2次)jQuery值以输入 [英] Insert(SpyOn 2 times) jQuery value to input during Jasmine tests
本文介绍了在Jasmine测试期间插入(SpyOn 2次)jQuery值以输入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
嗨我有工作测试
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);
});
我设置时的下一次测试
spyOn($.fn, "val").and.returnValue("Bar");
$("#newFoodtype").val()
spyOn($.fn, "val").and.returnValue("Foo");
$("#newFoodtype").val()
检查更改但有错误
错误:spyOn:val已经在
上被监视用法:spyOn(object,methodName)
Error: spyOn : val has already been spied upon Usage: spyOn(object, methodName)
推荐答案
- 你只需要返回一个新值而不是间谍
- 以下是我修改代码以使其正常工作的方法。
- 将一个变量分配给spy,以便我可以再次访问它
spyObj.and.returnValue(Foo);
-
请注意我使用了虚拟视图
foodtype
模仿您的视图。- You'll just need to return a new value instead of spying on it again.
- Here is how I modified your code to make it work.
- assigned a variable to spy so that I can access it once again
spyObj.and.returnValue("Foo");
Please note that I've used a dummy view
foodtype
which mimics your view.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"); }); });
这篇关于在Jasmine测试期间插入(SpyOn 2次)jQuery值以输入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文