2015-12-02 134 views
0

使用Jasmine Spies时,andCalledThrough()方法与toHaveBeenCalled有什么不同,它实际上是否完全运行原始方法?我应该使用它的任何理想场景?方法`toHaveBeenCalled()`和`andCalledThrough()`有什么区别?

+0

基本上在嘲笑它被用来执行你的模拟功能,但“andCalledThrough()”使用这个调用功能,并且也执行它和“toHaveBeenCalled”这只能检查功能是否在文件中或不和获取调用 –

回答

2

这些都是在刺探一个函数的两个不同的步骤。

当你在一个函数上声明一个spy时,在函数被调用之前,你可以附加一些指令去调用该函数时应该做的事情。 and.callThrough()表示将使用实际的实现。其他选项是and.callFake()and.returnValue(),它允许你嘲笑的回应,而不是使用实际的执行情况。

在你侦察到的函数被调用后,你可以使用expecttoHaveBeenCalled及其变体验证它​​是否被调用。

请参阅documentation