何时使用 createSpy、createSpyObject 和 spyOn?

When to use createSpy, createSpyObject and spyOn?

最近了解到spyOn不能和外部依赖一起使用,只能和System Under Test一起使用。

但我有一些关于为什么它不能使用的问题,我想出的答案很少。

所以我想知道我们应该使用它们的最佳实践。

jasmine.createSpy可以在没有窥探功能的时候使用。它将像 spyOn 一样跟踪调用和参数,但没有实现。

jasmine.createSpyObj 用于创建一个将监视一个或多个方法的模拟。它 returns 一个对象,每个字符串都有一个 属性 作为间谍。

你应该在对象上有一个方法 spyOn.The spyOn 的优点是你可以调用原始方法

当我们需要监视一个函数时,我们可以使用jasmine.createSpy,例如

     let router = { navigate: jasmine.createSpy("navigate") },

这里我们使用 jasmine.createSpy

创建间谍功能

jasmine.createSpyObj 用于创建间谍 class/obj,它具有方法,例如

     let service = jasmine.createSpyObj("ApiService", ["getData"])}
    

这里的ApiService是class有getData功能的