【发布时间】:2020-06-01 19:49:45
【问题描述】:
我正在尝试学习有关 Jest 的教程。我正在尝试进行一个包含我的 REST 服务模拟的测试。根据教程,我需要在与 src 文件夹相同的级别添加一个名为 mocks 的文件夹(前后有两个下划线 - 所以会删除此编辑器中的那些)。在该文件夹中,我创建了一个与我的 REST 服务同名的 const:
const CrawlService = jest.fn(() => 42);
现在在我的测试中,我有以下内容:
import { CrawlService } from "../../../services/CrawlService";
import "regenerator-runtime/runtime";
describe("CardsButtonContainer", () => {
it("dsfsdf", async () => {
var jobsResult = await CrawlService.getJobs(0, 1, 1, 10, 0);
});
});
我的期望是 Jest 会用模拟服务替换我的 REST 服务,我在这里误解了什么吗?我收到以下错误:
请求失败,状态码 404
似乎是我的 REST 服务被调用,而不是被模拟的服务。
我想我必须以某种方式添加函数 getJobs,但我不确定当它来自一个班级时如何做到这一点?欢迎大家指点。
【问题讨论】:
-
我建议你使用像
fetch-mock或nock这样的库来模拟实际的端点。这允许您的前端代码发出实际请求,但响应将在您的测试中被模拟。 -
我正在尝试跟踪示例,我在帖子中添加了一张图片。他不使用任何额外的框架。
-
看起来该示例正在模拟整个
isomorphic-fetch模块。使用像fetch-mock或nock这样的库要简单得多,并且允许您自定义任何请求的响应。 -
谢谢,我会试一试。你能添加一个答案。当我实施了一个工作样本时,我会接受它。如果你应该推荐两个包中的一个,你会选择哪一个?