You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用mockImplementation时提示addNumbers未定义的问题排查

Jest 多测试用例自定义 Mock 实现问题解决

问题场景

现有测试代码结构如下,尝试为不同测试用例设置addNumbers的不同 Mock 实现,但运行时提示测试用例内addNumbers未定义。若在文件顶部直接 Mock 固定实现可正常运行,但无法满足多测试用例自定义逻辑的需求。

const request = require("supertest");
const app = require("../app");

jest.mock("./addFunc", () => ({
    addNumbers: jest.fn()
}));
...
test("Testing add function with double result", () => {
    addNumbers.mockImplentation((a, b) =>
        return 2 * (a + b));
    let res = await request(app).post("/addNumbers").send({
        a: 1,
        b: 2
    });
    expect(res.body.result).toBe(6);
});
...
test("Testing add function with half result", () => {
    addNumbers.mockImplentation((a, b) =>
        return (a - b) / 2);
    let res = await request(app).post("/addNumbers").send({
        a: 6,
        b: 2
    });
    expect(res.body.result).toBe(2);
});
...

问题原因及解决步骤

  1. 未导入 Mock 后的模块:addNumbers是./addFunc模块导出的方法,并非全局变量,必须显式导入才能在测试用例中访问。
  2. 拼写错误:代码中mockImplentation存在拼写错误,正确写法是mockImplementation。
  3. 测试用例隔离:建议在每个测试用例执行前后重置 Mock,避免不同测试用例的 Mock 逻辑互相干扰。

修正后的代码示例

const request = require("supertest");
const app = require("../app");
// 导入mock后的模块,获取addNumbers方法
const { addNumbers } = require("./addFunc");

jest.mock("./addFunc", () => ({
    addNumbers: jest.fn()
}));

// 每个测试用例前重置Mock,避免污染
beforeEach(() => {
    jest.clearAllMocks();
});

test("Testing add function with double result", async () => {
    // 修正拼写错误:mockImplementation
    addNumbers.mockImplementation((a, b) => {
        return 2 * (a + b);
    });
    let res = await request(app).post("/addNumbers").send({
        a: 1,
        b: 2
    });
    expect(res.body.result).toBe(6);
});

test("Testing add function with half result", async () => {
    addNumbers.mockImplementation((a, b) => {
        return (a - b) / 2;
    });
    let res = await request(app).post("/addNumbers").send({
        a: 6,
        b: 2
    });
    expect(res.body.result).toBe(2);
});

内容的提问来源于stack exchange,提问作者NodeFriend

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 20:41:06