如何模拟尚不存在的节点模块?
Posted
技术标签:
【中文标题】如何模拟尚不存在的节点模块?【英文标题】:How to mock a node module that doesn't exist yet? 【发布时间】:2019-12-04 06:28:51 【问题描述】:no-such-module.ts
declare module 'no-such-module'
export function sum(a: number, b: number): number;
sum.ts
import sum from 'no-such-module';
export const func = (a: number, b: number) => sum(a, b);
sample.test.ts
jest.mock('no-such-module');
const sum = require('no-such-module');
sum.mockImplementation((a,b) => a+b);
describe('sample test', () =>
it('should pass', () =>
expect(sum(1, 2)).toBe(3);
);
);
错误
Cannot find module 'no-such-module' from 'sample.test.ts'
> 1 | jest.mock('no-such-module');
| ^
2 | const sum = require('no-such-module');
3 |
4 | sum.mockImplementation((a,b) => a+b);
是否可以模拟一个尚不存在的节点模块?我在 ts 文件中声明了 no-such-module
。我正在尝试从模块中模拟一个函数。
【问题讨论】:
【参考方案1】:jest.mock('no-such-module', () =>
return
sum: (a,b) => a+b
;
, virtual: true );
const sum = require('no-such-module');
我们需要将选项 virtual: true
传递给 jest.mock()
【讨论】:
有没有办法在每个 out 测试中覆盖“sum”的实现。因为大多数时候我们想为每个测试测试不同的场景以上是关于如何模拟尚不存在的节点模块?的主要内容,如果未能解决你的问题,请参考以下文章