7

没有这样的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);

样本.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);

是否可以模拟尚不存在的节点模块?no-such-module我在 ts 文件中声明了a 。我正在尝试从模块中模拟一个函数。

4

1 回答 1

17
jest.mock('no-such-module', () => {
    return {
        sum: (a,b) => a+b
    };
}, { virtual: true });

const { sum } = require('no-such-module');

我们需要将选项传递{ virtual: true }给 jest.mock()

于 2019-07-25T23:24:14.707 回答