我正在使用的库的结构为
declare namespace foo {
function bar();
};
declare namespace foo.bar {
function baz();
};
所以我需要模拟的两个函数是 foo.bar()
和 foo.bar.baz()
。
模拟我之前使用的 foo.bar()
require('foo');
jest.mock('foo', () => ({
bar: () => mockedBar,
}));
有什么方法可以模拟 foo.bar.baz()
吗?我试过了
jest.mock('foo.bar', () => ({
}));
但它显示一条消息 Cannot find module 'foo.bar' from 'functions.test.js'
。
最佳答案
您可以在项目根目录的 __mocks__
文件夹中为您的模块定义一个自定义模拟(在 jest config 中定义!)。因此,您可以使用模拟的 foo
模块函数创建 __mocks__/foo.js
,并且 Jest 会自动加载此模块以进行测试。您还可以为您的模拟指定自定义路径:
jest.mock('foo', () => jest.requireActual('../some/another/folder/foo.js'));
检查 Jest manual了解更多信息
关于node.js - 使用 Jest 模拟 namespace 和具有相同名称的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45175599/