typescript - 请确保索引 [0] 处的参数 ContactRepository 在 RootTestModule 上下文中可用
问题描述
我正在尝试通过 Nest 测试一个类。在这个类中(参见下图),编写类的人通过 typeorm 创建一个存储库。
当我尝试测试“createContact”函数时,出现以下错误:“Nest 无法解析 ContactService (?) 的依赖项。请确保索引 [0] 处的参数 ContactRepository 在 AuthModule 上下文中可用”。
这是我的测试课:
您知道如何使测试考虑到这一点,因此不再出现错误吗?
非常感谢!
解决方案
您需要为要注入的值提供一个实现@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();
});
save
你可以为and提供任何你想要的东西find
,但是这样做你还可以检查传递给模拟的内容,以及它们被调用的次数(如果你正在观看模拟)。
推荐阅读
- r - R Studio:〜作为情节()中的“意外输入”
- git - Heroku 部署 - 无法读取用户名
- timer - 无法为 samr30-xplained 启用 GCLK 生成器(使用 RIOT OS)
- c - While 循环和嵌套 if 不能一起工作
- javascript - 在flipclock.js倒数计时器停止后修改页面文本
- asp.net - 删除 http://localhost:54178/api/employees 405(方法不允许)
- java - 从 Java 运行 Python 脚本并传递用户输入
- javascript - 如何重定向到外部 MP4 文件链接
- spring-boot - 如何使用 Spring Boot Web 客户端为内容类型 application/x-www-form-urlencoded 的表单数据发布请求
- javascript - HTML 页面上的简单嵌入式 VLC 插件,从特定时间开始