Javascript 如何监视预期为异步的函数?
我有这个函数,我希望在调用jasmine测试脚本5秒后调用它 我尝试了jasmine文档中描述的传统方式:Javascript 如何监视预期为异步的函数?,javascript,asynchronous,jasmine,Javascript,Asynchronous,Jasmine,我有这个函数,我希望在调用jasmine测试脚本5秒后调用它 我尝试了jasmine文档中描述的传统方式: describe("Tests:", function(){ it("Expects slowFunction() will be called", function(){ var slowFunctionSpy = spyOn(window, 'slowFunction').andCallThrough(); init(); waitsFor(function
describe("Tests:", function(){
it("Expects slowFunction() will be called", function(){
var slowFunctionSpy = spyOn(window, 'slowFunction').andCallThrough();
init();
waitsFor(function() {
expect(slowFunctionSpy).toHaveBeenCalled();
}, "Call Not Answered by Remote End.", 10000);
});
});
init()
函数会触发一系列事件,也就是说,它会触发一个函数,最终将其带到被调用的slowFunction()
。
我省略了run()方法,因为我认为如果waitsFor()
得到expect()
为true
测试应该通过吗
我也试过了,但测试还是失败了
describe("Tests:", function(){
var foo=false;
var async = new AsyncSpec(this);
async.beforeEach(function(done){
setTimeout(function(done){
foo = true;
init();
done();
}, 10000);
});
it("Expects slowFunction() will be called", function(){
var slowFunctionSpy = spyOn(window, 'slowFunction').andCallThrough();
expect(slowFunctionSpy).toHaveBeenCalled();
});
});
可能有些事情我不太明白。请帮我澄清一下我的想法好吗
更新:slowFunction()
是一个自定义事件,根据我的谷歌搜索结果,我认为spyOn()不适用于事件。新问题是:
如何监视Jasmine中的自定义事件?是否在setTimeout上传递了要测试的函数?@AndreasKöberle No.on
init()
调用了login()
函数。接下来是一系列最终导致这一功能的事件。所以当我运行这个测试时,我确信这个方法被调用了。只是测试失败了。如果能告诉我们你想测试的函数,那会有帮助的。@AndreasKöberle这是代码的一部分。因此,当我从init()调用login()时,会发生onLogin()事件。我有一个成功的测试来监视onLogin()。因此,当onLogin()发生时,它会发出一个调用,因此,该调用会在5s内在另一端应答。因此,我想测试onCallAnswered()。为什么要省略runs()
块?异步操作应该包装在这样的块中。