茉莉花间谍不工作

时间:2015-03-07 20:55:04

标签: unit-testing jasmine karma-jasmine

我对Jasmine相当新,我必须测试几个函数调用:

JS CODE

 object1 = {

    function1: function() {
       // object1.function2 is a callback
       object2.someFunction("called", object1.function2)
    },

    function2:  function() {
       // code to do stuff
    }

 }

测试代码

describe("test suite", function(){ 
     it("test1", function(){ 
          spyOn(object1, "function2");
          object1.function1();
          expect(object1.function2).toHaveBeenCalled();
     });
});

我已经尝试了上述但它失败了,并说“已经调用了预期的间谍功能2”。有人可以帮我解决这个问题吗?感谢

1 个答案:

答案 0 :(得分:4)

您可以按如下方式重写测试

describe("test suite", function(){ 
     it("test1", function(done){ 
          spyOn(object1, "function2");
          object1.function1();
          setTimeout(function() {
              expect(object1.function2).toHaveBeenCalled();
              done();
          });
     });
});

您的测试代码需要进行异步测试,因为永远不会立即调用回调。您可以添加另一个异步调用,该调用将放置在调用堆栈中的object1.function2之后,并且当执行setTimeout内的函数时,它将调用object1.function2并且一旦声明为使您可以通过调用done()来结束异步测试。