我有一个模拟版本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实例的父函数,但我仍然无法让它工作。如何在多个测试之间共享笑话模拟?
1 回答
忽然笑
TA贡献1806条经验 获得超5个赞
Jest 有一个moduleNameMapper
配置属性,可用于指定字符串或正则表达式以匹配您的导入并将其替换为模拟文件
或者,您可以添加模拟而不在 中指定它,方法moduleNameMapper
是将模拟文件放在一个名为的文件夹__mocks__
中
如果它位于 node_modules 中,则该__mocks__
文件夹应位于您的父目录中。
添加回答
举报
0/150
提交
取消