使用 Vitest 模拟依赖关系

问题描述 投票:0回答:1

以下代码https://i.stack.imgur.com/vs7vp.png在我使用Jest时有效,但在Vitest中不起作用。

我知道 Vitest 在这种情况下的运作方式有所不同,但我还没有找到解决方案。

有人尝试过使用 Vitest 模拟依赖关系吗?

node.js mocking vitest
1个回答
0
投票

我在文件的开头有这一行:

vi.mock('@infra/storage/s3-adapter/aws-s3.adapter');

我只能通过添加“await import(...”和“it”块内的模拟操作来解决这个问题,如下所示:

it('should returns 200 and the document added to the program', async () => {
  // Arrange
  const awsS3Adapter = await import(
    '@infra/gateways/storage/aws-s3.adapter'
  );

  awsS3Adapter.AwsS3Adapter.prototype.uploadFile = vi
    .fn()
    .mockResolvedValue('any_file_path');

  awsS3Adapter.AwsS3Adapter.prototype.getUrl = vi
    .fn()
    .mockResolvedValue(`any_url`);

如果我尝试在

beforeAll
中或“它”之外使用它,它不起作用。因此,每次需要模拟适配器时,我都需要在每个块中重复此代码。

© www.soinside.com 2019 - 2024. All rights reserved.