Javascript 如何监视预期为异步的函数?

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

我有这个函数,我希望在调用jasmine测试脚本5秒后调用它

我尝试了jasmine文档中描述的传统方式:

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()
块?异步操作应该包装在这样的块中。