为了账号安全,请及时绑定邮箱和手机立即绑定

如何在多个测试之间共享笑话模拟?

如何在多个测试之间共享笑话模拟?

PIPIONE 2022-10-27 15:31:54
我有一个模拟版本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__文件夹应位于您的父目录中。


查看完整回答
反对 回复 2022-10-27
  • 1 回答
  • 0 关注
  • 62 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信