📜  angular9 spy - Javascript (1)

📅  最后修改于: 2023-12-03 15:29:24.089000             🧑  作者: Mango

Angular9 Spy - Javascript

Angular9 Spy 是 Angular 中提供的一个强大的调试工具,它可以监视(spy)和捕获(stub)函数的调用和参数,并且可以返回自定义的结果。Spy 工具是在测试 Angular 应用程序时非常实用的,它允许你验证函数是否被调用,以及它们被调用的次数和所传递的参数。

Spy 的用法

有两种创建 spy 的方式。第一种方式是使用 jasmine.createSpy 函数,它返回一个新的 spy 函数。第二种方式是使用 jasmine.spyOn,这会在现有对象上创建一个 spy。

jasmine.createSpy
const mySpy = jasmine.createSpy('mySpy');

这个语句会创建一个新的 spy 函数,并使用 'mySpy' 作为它的名称。你可以像调用普通函数一样调用它,也可以使用 toHaveBeenCalled() 方法来验证它是否被调用过。

jasmine.spyOn
const myObject = {
  add(a, b) {
    return a + b;
  }
};
    
spyOn(myObject, 'add');

这个语句会创建一个现有对象的 spy,并将其应用于对象上的一个特定方法。在这个例子中,我们创建了一个包含一个 add 方法的对象,并且将 add 方法的执行设置为 spy。现在,当我们调用 add 方法时,我们的 spy 将捕获它的调用。

捕获参数和返回值

Spy 工具还可以用来捕获参数和返回值。例如,假设我们有下面这个函数:

function add(a, b) {
  return a + b;
}

我们可以使用 spy 来捕获它被调用时传递的参数,并在需要时返回自定义的结果。以下是一个例子:

const mySpy = jasmine.createSpy('add').and.callFake((a, b) => {
  return a * b;
});

console.log(mySpy(2, 3)); // 输出 6
console.log(mySpy.calls.mostRecent().args); // 输出 [2, 3]

在这个例子中,我们创建了一个名为 add 的 spy 来监视 add 函数。然后,我们通过调用 and.callFake 函数,为 spy 设置一个回调函数。这个回调函数接收参数并返回一个自定义的结果,这里我们将其设置为返回传递参数的乘积。最后,我们调用 mySpy 函数,并可以通过 calls 属性来访问 mySpy 被调用的内容。

总结

Angular9 Spy 是一个非常强大的调试工具,它可以监视和捕获函数的调用和参数,并且可以返回自定义的结果。使用 Spy 工具可以方便地验证函数是否被调用,以及它们被调用的次数和所传递的参数。通过学习 Angular9 Spy,你可以更加高效地测试你的应用程序。