我对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”。有人可以帮我解决这个问题吗?感谢
答案 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()
来结束异步测试。