我有一个要模拟的简单类,由于某种原因,玩笑返回的是未定义的。
这是代码:
import { MyClass as myClass } from './my-class';
jest.mock('./my-class', () => jest.fn());
console.log(myClass); // undefined
登录myClass时,我得到undefined
。
如果我在不模拟实现的情况下进行模拟,则会得到以下提示:
import { MyClass as myClass } from './my-class';
jest.mock('./my-class');
console.log(myClass);
上面的代码记录:
function MyClass() {return mockConstructor.apply(this,arguments);}
不允许模拟,因为它不是jest.fn()
,并且没有mockImplementation
这样的有用方法。
正确的方法是什么?
答案 0 :(得分:0)
您没有正确模拟my-class
模块。您正在使用Named Exports
,还需要对此进行模拟。
例如
my-class.ts
:
export class MyClass {}
my-class.test.ts
:
import { MyClass as myClass } from './my-class';
jest.mock('./my-class', () => ({ MyClass: jest.fn() }));
console.log(myClass);
输出:
console.log
{ [Function: mockConstructor]
_isMockFunction: true,
getMockImplementation: [Function],
mock: [Getter/Setter],
mockClear: [Function],
mockReset: [Function],
mockRestore: [Function],
mockReturnValueOnce: [Function],
mockResolvedValueOnce: [Function],
mockRejectedValueOnce: [Function],
mockReturnValue: [Function],
mockResolvedValue: [Function],
mockRejectedValue: [Function],
mockImplementationOnce: [Function],
mockImplementation: [Function],
mockReturnThis: [Function],
mockName: [Function],
getMockName: [Function] }