【发布时间】:2020-10-23 00:13:13
【问题描述】:
我有一个 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 开发工具包,并且我不想不必要地重复模拟代码。但是,如果我将函数移动到单独的文件中并导入它,这将失败:
在我的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 实例的父函数,但我仍然无法让它工作。
如何在多个测试之间共享笑话?
【问题讨论】:
标签: javascript typescript unit-testing jestjs