我有一个 TypeScript 文件,它导出两个对象(由Typegoose创建)。
// my-document.ts
export class MyDocument extends Typegoose {
// ...
}
export const MyDocumentModel = new MyDocument().getModelForClass(MyDocument, ...)
我将脚本导入到被测脚本中。
// script-under-test.ts
import { MyDocumentModel } from './my-document';
export async function createDocument(doc: any) {
return await MyDocumentModel.create(doc);
}
现在我试图模拟 call MyDocumentModel.create(doc)
。
// script-under-test.test.ts
import { MyDocumentModel } from './my-document';
import { createDocument } from './script-under-test.ts';
jest.mock('./my-document');
describe('creation', () => {
const MyDocumentModelMock = MyDocumentModel as unknown as jest.Mock;
it('should create a new document', async () => {
const payload = { foo: 'bar' };
const document = {} as Document;
const createMock = jest.fn();
createMock.mockReturnValueOnce(document);
MyDocumentModel.mockImplementation(() => ({ create: createMock }));
const result = await createDocument(payload);
expect(createMock).toHaveBeenCalledWith(payload);
expect(result).toStrictEqual(document);
});
});
但我收到以下错误 - Number of calls: 0
。
如何模拟导入对象的函数?