请确保索引 [0] 处的参数 ContactRepository 在 RootTestModule 上下文中可用

Ver*_*uze 20 typescript jestjs nestjs

我正在尝试通过 Nest 测试一个课程。在这个类中(参见下图),对该类进行编码的人通过 typeorm 创建一个存储库。

在此输入图像描述

当我尝试测试“createContact”函数时,出现以下错误:“Nest 无法解析 ContactService 的依赖项(?)。请确保索引 [0] 处的参数 ContactRepository 在 AuthModule 上下文中可用”。

这是我的测试课:

在此输入图像描述

您知道如何使测试考虑到这一点,从而不再出现错误吗?

Jay*_*iel 29

您需要为要注入的值提供一个实现@InjectRepository(Contact)。幸运的是,Nest 提供了一种获取注入令牌正在使用的内容的方法getRepositoryToken()。这样,您可以创建一个自定义提供程序来提供将在实际实现中使用的令牌和模拟。测试设置看起来这样:

beforeEach(async () => {
  const module = await Test.createTestingModule({
    providers: [
      ContactService,
      {
        provide: getRepositoryToken(Contact),
        useValue: {
          save: jest.fn().mockResolvedValue(mockContact),
          find: jest.fn().mockResolvedValue([mockContact]),
        },
      },
    ],
  }).compile();
});
Run Code Online (Sandbox Code Playgroud)

save您可以为和提供您想要的任何内容find,但是这样做还可以让您检查传递给模拟的内容以及它们被调用的次数(如果您正在观看模拟)。

您可以在这里找到更多示例