首页 > 解决方案 > 如何编写测试,而不用在 nestjs 中模拟存储库

问题描述

我已经开始做一个小项目,我现在正在为这个项目编写测试,但我现在面临的问题与注入存储库有关。我在 beforeEach 函数中有以下代码

const moduleFixture = await Test.createTestingModule({
            controllers:[CustomersController],
            providers:[
                CustomersService,
                {
                    provide: getRepositoryToken(File),
                    useValue: Repository
                },
            ]
        }).compile();

我有一个调用端点的测试,现在每次运行测试时,都会出现这个错误

Cannot read property 'find' of undefined

很明显,因为我的 CustomerService 类中有一个代码this.fileRepository.find(),并且它引发错误的原因是因为文件存储库没有任何其他存储库应该具有的方法。在此处输入图像描述

我会很感激任何帮助,谢谢。

标签: javascriptnode.jsjestjsnestjs

解决方案


如果你想使用Repository你应该使用useClass而不是useValue. 您可以在这个 GitHub 存储库中看到几个 Repository 模拟示例


推荐阅读