📅  最后修改于: 2023-12-03 15:29:24.089000             🧑  作者: Mango
Angular9 Spy 是 Angular 中提供的一个强大的调试工具,它可以监视(spy)和捕获(stub)函数的调用和参数,并且可以返回自定义的结果。Spy 工具是在测试 Angular 应用程序时非常实用的,它允许你验证函数是否被调用,以及它们被调用的次数和所传递的参数。
有两种创建 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,你可以更加高效地测试你的应用程序。