Jestjs 从导入的文件模拟函数,同时检查是否已调用该函数

Jestjs 从导入的文件模拟函数,同时检查是否已调用该函数,jestjs,requirejs,es6-modules,Jestjs,Requirejs,Es6 Modules,我正在测试的文件从另一个文件导入func。为了阻止outside func运行,我模拟了导入: jest.mock("./anotherFile", () => ({ outsideFunc: jest.fn() })); 但是,我现在需要为函数编写一个单元测试,以检查是否调用了outsideFunc。不在乎回报,只在乎它被召唤了 正在测试的系统 function myFunc() { outsideFunc(); } describe("Testing myFunc", ()

我正在测试的文件从另一个文件导入func。为了阻止outside func运行,我模拟了导入:

jest.mock("./anotherFile", () => ({
  outsideFunc: jest.fn()
}));
但是,我现在需要为函数编写一个单元测试,以检查是否调用了
outsideFunc
。不在乎回报,只在乎它被召唤了

正在测试的系统

function myFunc() {
  outsideFunc();
}
describe("Testing myFunc", () => {
    it("Should call outsideFunc", () => {
      myFunc();
      expect(outsideFunc).toHaveBeenCalled();
    });
  });
测试

function myFunc() {
  outsideFunc();
}
describe("Testing myFunc", () => {
    it("Should call outsideFunc", () => {
      myFunc();
      expect(outsideFunc).toHaveBeenCalled();
    });
  });
当我运行测试时,我得到:

ReferenceError:未定义outsideFunc

我明白为什么我会犯这样的错误,通常我会

const outsideFuncMock = jest.fn() 
但是在本例中,当我执行导入以停止调用该函数时,我已经模拟了该函数,所以我有点不知所措

我的测试套件

jest.mock("./anotherFile", () => ({
  outsideFunc: jest.fn()
}));

describe("Testing myFunc", () => {
  it("Should call outsideFunc", () => {
    myFunc();
    expect(outsideFunc).toHaveBeenCalled();
  });
});

您就快到了,下面是解决方案:

文件夹结构:

。
├── 另一个文件.ts
├── 索引规范ts
└── 索引
0个目录,3个文件
index.ts

从“/anotherFile”导入{outsideFunc};
导出函数myFunc(){
outsideFunc();
}
另一个文件.ts

export const outsideFunc=()=>1;
索引规范ts

从“/”导入{myFunc};
从“./anotherFile”导入{outsideFunc};
jest.mock('./anotherFile.ts',()=>({
outsideFunc:jest.fn()
}));
描述('测试myFunc',()=>{
它('应该调用outsideFunc',()=>{
myFunc();
expect(jest.isMockFunction(outsideFunc)).toBeTruthy();
expect(outsideFunc).tohavebeincall();
});
});
100%覆盖率的单元测试结果:

PASS src/stackoverflow/58413956/index.spec.ts
测试myFunc
✓ 应调用outsideFunc(4ms)
----------|----------|----------|----------|----------|-------------------|
文件|%Stmts |%Branch |%Funcs |%Line |未覆盖行|s|
----------|----------|----------|----------|----------|-------------------|
所有文件| 100 | 100 | 100 | 100 ||
index.ts | 100 | 100 | 100 | 100 ||
----------|----------|----------|----------|----------|-------------------|
测试套件:1个通过,共1个
测试:1项通过,共1项
快照:共0个
时间:3.129秒,估计7秒
源代码: