间谍函数
函数探查器允许我们验证某个函数是否以正确的参数被调用了特定次数。本代码片段演示了如何使用模拟函数来探查函数。
import { assertSpyCall, assertSpyCalls, spy } from "jsr:@std/testing/mock";
function log(message: string) {
console.log(message);
}
const logger = { log };
Deno.test("logger uses the log function", () => {
创建对 `logger.log` 方法的探查器。
const logSpy = spy(logger, "log");
调用 `logger.log` 方法。
logger.log("Hello, world!");
try {
验证 `log` 函数仅被调用了一次。
assertSpyCalls(logSpy, 1);
验证 `log` 函数是否以正确的参数被调用。
assertSpyCall(logSpy, 0, { args: ["Hello, world!"] });
} finally {
恢复 `logger.log` 函数以停止探查。
logSpy.restore();
}
});
Deno.test("Creating a spy with the using keyword", () => {
方法探查器是可处置的,因此我们可以使用 `using` 关键字创建它们。
using logSpy = spy(logger, "log");
logger.log("Disposable spy");
使用 `using` 关键字创建的探查器会在测试结束时自动恢复。
assertSpyCalls(logSpy, 1);
});
使用 Deno CLI 在本地运行此示例
deno run https://docs.deno.org.cn/examples/scripts/spy_functions.ts