node.js - 使用 Jest 模拟 namespace 和具有相同名称的函数

标签 node.js typescript mocking jestjs

我正在使用的库的结构为

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/

相关文章:

mysql - 如何使用 nodejs 和 pem key 文件连接到 Cloud SQL 实例

javascript - 无法安装 gruntjs(总是创建嵌套文件夹)

javascript - 在 JavaScript 中创建扁平数组时,如何对匹配的嵌套数组子项进行分组?

java - 我需要在单元测试中模拟 RabbitMQ

PHPUnit 预言一个没有确切参数的方法

python - 在 Python 单元测试中修补多个方法的首选方式

node.js - 将 MongoDB 与 Node.js 一起使用的最佳方式?

angularjs - Stormpath 不允许我在登录时访问路线

typescript - 将自定义指令绑定(bind)到 Angular2 中的 Observable

angular - 如何正确地 forkJoin 可观察对象列表或其订阅?