在Jasmine测试期间插入(SpyOn 2次)jQuery值以输入 [英] Insert(SpyOn 2 times) jQuery value to input during Jasmine tests

查看:246
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆