我刚开始接触Deno,有一件事让我有点不确定,那就是如何为全局fetch函数制造一个存根或间谍?
一种解决方案是将fetch简单地包装在一个函数中,该函数本身可以被存根或间谍,但这似乎是一种不必要的抽象。
任何帮助都将不胜感激。
我刚开始接触Deno,有一件事让我有点不确定,那就是如何为全局fetch函数制造一个存根或间谍?
一种解决方案是将fetch简单地包装在一个函数中,该函数本身可以被存根或间谍,但这似乎是一种不必要的抽象。
任何帮助都将不胜感激。
使用 denock,您可以模拟 fetch 调用的返回对象。这可能不是您想要的,但现在您可以在没有对服务器进行真实调用的情况下进行测试。
https://deno.land/x/denock@0.2.0
import { assertEquals } from "https://deno.land/std/testing/asserts.ts";
import { denock } from "https://deno.land/x/denock/mod.ts";
// function to test
async function fetchFromServer() {
const urlObject = new URL("https://jsonplaceholder.typicode.com/todos");
const response = await fetch(urlObject, {
method: "POST",
headers: new Headers({
"content-type": "application/json",
}),
body: JSON.stringify({
userId: 2,
id: 23024,
title: "delectus aut autem",
completed: false,
}),
});
return await response.json();
}
// mock return
denock({
method: "POST",
protocol: "https",
host: "jsonplaceholder.typicode.com",
headers: [
{
header: "content-type",
value: "application/json",
},
],
path: "/todos",
requestBody: {
userId: 2,
id: 23024,
title: "delectus aut autem",
completed: false,
},
replyStatus: 201,
responseBody: { example: "My mocked response" },
});
// test
Deno.test("fetch", async () => {
const actual = await fetchFromServer();
assertEquals({ example: "My mocked response" }, actual);
});