我有一个TypeScript文件,正在尝试用Jest模拟。这是文件:
export class Logger {
log(message) => {console.log(message); }
}
我正在单元测试的类具有Logger
作为依赖项,因此我试图创建一个可在其他测试中重用的模拟。这是我的模拟尝试:
export const MockLogger = jest.fn<Logger, any>(() => {
const mockedObject = {
log: jest.fn()
};
return mockedObject;
});
在我的测试文件中,导入常量并尝试使用它。
import {MyService} from './my-service';
import {MockLogger} from './mock-logger';
describe('...', () => {
let service: MyService; // depends on Logger
beforeEach(() => {
jest.resetAllMocks();
service = new MyService(MockLogger());
});
});
但是MockLogger()
记录为undefined
。我还尝试注入new MockLogger()
,它似乎是mockConstructor {}
。不知道那是什么;无论哪种方式,.log()
都没有要调用的MyService
函数。
使用jest@^24.9
和typescript@^3.6
它必须与执行时间有关。如果我在测试本身的开头放置了完全相同的模拟,它将起作用。
我之前的jest.resetAllMocks()
会在有机会使用该模拟之前清除该模拟。