reactjs - 如何在 Jest 中测试模拟函数的返回值

标签 reactjs testing jestjs

我想在 Jest 中测试模拟函数的返回值。

在下面的代码中我想模拟 fs 模块的 mkdirSync 函数

const fs = require("fs");


describe("Testing mock fs.mkdirSync", () => {
    fs.mkdirSync = jest.fn().mockReturnValue(5);
    fs.mkdirSync("./apple");

    it("fs.mkdirSync must have been called", () => {
        expect(fs.mkdirSync).toHaveBeenCalled();
    });

    //This test fails with TypeError: Cannot read property '0' of undefined

    it("fs.mkdirSync last return value must be 5", () => {
        expect(fs.mkdirSync.mock.results[0].value).toBe(5);
    });



});

第二个测试因 TypeError 失败:无法读取未定义的属性“0”

最佳答案

为什么要测试 Jest 模拟函数的返回值?此时您正在测试jest

您可以将 fs.mkdirSync 分配给一个变量并测试该值,因为这是返回值:

const result = fs.mkdirSync("./apple");
it("fs.mkdirSync last return value must be 5", () => {
    expect(result).toBe(5);
});

关于reactjs - 如何在 Jest 中测试模拟函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51444891/

相关文章:

javascript - 如何使用 Cypress stub 模块功能?

reactjs - webpack 从域访问时主机 header 无效,而不是通过 IP 访问时

spring - 使用 junit 测试端点(POST 方法)

c# - 测试 asp.net 项目 IHttpHandler , Request.Files 问题

javascript - 使用 Jest 在 vanilla js 中测试 AJAX

javascript - BeforeEach 中的 Jest 闭包

css - 如何修改 reactjs-dropdown-component 的 css?

javascript - 为什么这个 setState 是这样的,它是如何工作的?

testing - 使用服务器测试不同编程语言的客户端的最佳方法是什么?

javascript - 指定在任何 Jest 设置发生之前运行的代码