猿问

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

我有一个模拟版本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实例的父函数,但我仍然无法让它工作。


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


PIPIONE
浏览 76回答 1
1回答

忽然笑

Jest 有一个moduleNameMapper配置属性,可用于指定字符串或正则表达式以匹配您的导入并将其替换为模拟文件或者,您可以添加模拟而不在 中指定它,方法moduleNameMapper是将模拟文件放在一个名为的文件夹__mocks__中如果它位于 node_modules 中,则该__mocks__文件夹应位于您的父目录中。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答