Jasmine spies callThrough和callFake

kku*_*udi 14 javascript jasmine angularjs

我有一种情况,其中我想打电话给done()beforeEach回调已被调用后.

我尝试按如下方式执行此操作:

spyOn(scope, 'onAdmin').and.callThrough().and.callFake(function(){done()})
Run Code Online (Sandbox Code Playgroud)

但我不确定我是否得到了正确的行为.基本上我想要实现的是能够done()在每次回调完成之后调用它所做的事情.

更新:解决方案

scope.onAdminBackup = scope.onAdmin;
spyOn(scope, 'onAdmin').and.callFake(function(admin)  {

 scope.onAdminBackup();
 done() ;

})  
Run Code Online (Sandbox Code Playgroud)

ste*_*fan 2

当您编写done()时,您会立即调用done,尝试将done作为值传递:

spyOn(scope, 'onAdmin').and.callThrough().and.callFake(done)
Run Code Online (Sandbox Code Playgroud)

  • 我发现的唯一解决方法如下:在监视我的函数之前对其进行备份。仅使用我的备份功能调用Fake,然后完成。虽然看起来有点黑客 (2认同)