Jestjs 从导入的文件模拟函数,同时检查是否已调用该函数
我正在测试的文件从另一个文件导入func。为了阻止outside func运行,我模拟了导入: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", ()
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秒
源代码: