方法`toHaveBeenCalled()`和`andCalledThrough()`有什么区别?

时间:2015-12-02 08:24:25

标签: angularjs unit-testing jasmine karma-jasmine

在使用Jasmine Spies时,andCalledThrough()方法与toHaveBeenCalled的方法有何不同,它是否真的完全运行原始方法?我应该使用它的任何理想场景吗?

1 个答案:

答案 0 :(得分:2)

这是监视某个功能的两个不同步骤。

当您在函数上声明spy时,在调用函数之前,您可以附加一些指令来指示在调用函数时应该执行的操作。 and.callThrough()表示将使用实际的实现。其他选项包括and.callFake()and.returnValue(),它们允许您模拟响应而不使用实际实现。

在您调查的功能被调用后,您可以使用expecttoHaveBeenCalled及其变体验证是否已调用该功能。

请参阅documentation