我有一种情况,我想在调用回调后在done()上调用beforeEach

我尝试这样做,如下所示:

spyOn(scope, 'onAdmin').and.callThrough().and.callFake(function(){done()})

但是我不确定我的行为正确。从本质上讲,我想要实现的是能够在每个回调完成操作后调用done()

更新:解决方法
scope.onAdminBackup = scope.onAdmin;
spyOn(scope, 'onAdmin').and.callFake(function(admin)  {

 scope.onAdminBackup();
 done() ;

})

最佳答案

我从未将这些功能链接在一起,因为在我看来它们似乎相反。您是说,当我调用此方法-onAdmin-时,在范围内将其正常调用。 Jasmine 为我们提供的callThrough方法就是这么做的。

但是,然后您也沿callFake方法进行链接,因此您说了却不实际调用它,而是调用此假函数-非常矛盾。

如果要在onAdmin方法上调用 spy ,而不是被触发,则希望它执行其他操作(模拟操作),然后使用.and.callFake(fn)。还应考虑到上述@stefan之类的问题-不要调用该函数-callFake只是想将一个函数作为参数,它将自己调用它。

如果不向我们显示更多代码,这可能会更符合您的需求。

spyOn(scope, 'onAdmin')and.callFake(done)

关于javascript - Jasmine spy callThrough和callFake,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24997174/

10-12 15:20