在依赖于由另一个模块导出的服务的测试中获取错误Cannot find module 'src/foo/foo.module' from 'bar/bar.service.spec.ts'
。
我可以通过在Nest.js项目中有两个独立的模块来重现这个问题,比如FooModule和BarModule,它们都导出自己的服务,比如FooService和BarService,其中一个将另一个服务作为构造函数依赖注入。我还没有找到正确的方法来设置这个场景的测试,而不步入上述错误。下面是具有依赖注入的服务的spec文件的示例:
import { Test, TestingModule } from '@nestjs/testing';
import { FooModule } from 'src/foo/foo.module';
import { FooService } from 'src/foo/foo.service';
import { BarService } from './bar.service';
describe('BarService', () => {
let service: BarService;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [BarService, {
provide: FooService,
useValue: {test:() => 'This is a test'}
}],
imports: [FooModule]
}).compile();
service = module.get<BarService>(BarService);
});
it('should be defined', () => {
expect(service).toBeDefined();
});
});
下面是我如何在foo. modal.ts中导出依赖项FooService
import { Module } from '@nestjs/common';
import { FooService } from './foo.service';
@Module({
providers: [FooService],
exports: [FooService],
})
export class FooModule {}
导入我确信它们是正确的,所以找不到这个错误的任何原因。我想成功地测试服务,尽管它依赖于其他模块。否则项目运行良好,所以它只是单元测试。感谢任何输入!
更新:这只发生在运行jest时。
1条答案
按热度按时间g6ll5ycj1#
这在运行应用程序时不会发生,只有在运行jest时才会发生,对吗?then不是一个nestjs问题而是一个jest问题
jest默认不理解绝对路径,这就是原因。
另一篇文章也问同样的问题:Cannot find module '@app/common' error when e2e testing