小编Ram*_*Ram的帖子

即使函数已被调用,expect(jest.fn()).toHaveBeenCalled() 也会失败

我正在尝试对返回承诺的函数进行单元测试。我在验证模拟函数是否被调用时遇到了挑战。这就是我所做的。

// codetotest.js
const { SomeModule, isSomething, isSomethingElse } = require("some-module");

exports.somefunction = (param1, param2)=> {
    const someModule = new SomeModule();

    someModule.someMethod("aaa", isSomething);
    someModule.someMethod("bbb", isSomethingElse);

    return (someModule.someOtherMethod(param1)
    .then(()=>{someModule.run(param2)}));
}
Run Code Online (Sandbox Code Playgroud)

这是测试文件,测试表明没有调用模拟函数,但我确实看到模拟函数中的控制台语句正在显示。

// codetotest.test.js
const { somefunction} = require("./codetotest.js");
const { SomeModule } = require("some-module");

jest.mock("some-module", () => {
    return {
        SomeModule: jest.fn().mockImplementation(() => {
            return {
                someMethod: jest.fn((param, fn) => { console.log("This prints!"); }),
                someOtherMethod: jest.fn((param) => { return Promise.resolve(() => { }) }),
                run: jest.fn((param) => { return Promise.resolve(() => …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing node.js jestjs

7
推荐指数
1
解决办法
3万
查看次数

标签 统计

javascript ×1

jestjs ×1

node.js ×1

unit-testing ×1