如何在多个测试之间共享jest mocks?
如何在多个测试之间共享jest mocks?
我有一个模拟的aws-sdk
版本,它在我的测试中运行良好:
jest.mock("aws-sdk", () => { return { Credentials: jest.fn().mockImplementation(() => ({})), Config: jest.fn().mockImplementation(() => ({})), config: { update: jest.fn(), }, S3: jest.fn().mockImplementation(() => ({ getSignedUrlPromise: awsGetSignedUrlMock, })), SQS: jest.fn().mockImplementation(() => ({})), }; });
然而,我的许多测试使用模拟的AWS SDK,并且我不想不必要地重复模拟代码。然而,如果我将该函数移动到一个单独的文件并导入它,这将失败:
在我的testSupport.ts
文件中:
export const mockAwsSdk = () => { return { Credentials: jest.fn().mockImplementation(() => ({})), Config: jest.fn().mockImplementation(() => ({})), config: { update: jest.fn(), }, S3: jest.fn().mockImplementation(() => ({ getSignedUrlPromise: awsGetSignedUrlMock, })), SQS: jest.fn().mockImplementation(() => ({})), }; };
在测试文件中:
jest.mock("aws-sdk", mockAwsSdk);
这会导致失败:
ReferenceError: Cannot access 'testSupport_1' before initialization
我尝试了各种解决方案,包括创建一个接受jest
实例的父函数,但我仍然无法使其工作。
如何在多个测试之间共享jest模拟?