typescript 模块间DI测试中出现Nest.js错误,Cannot find module 'src/foo/foo.module' from 'bar/bar.service.spec.ts'

hfwmuf9z  于 2023-05-23  发布在  TypeScript
关注(0)|答案(1)|浏览(128)

在依赖于由另一个模块导出的服务的测试中获取错误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时。

g6ll5ycj

g6ll5ycj1#

这在运行应用程序时不会发生,只有在运行jest时才会发生,对吗?then不是一个nestjs问题而是一个jest问题
jest默认不理解绝对路径,这就是原因。
另一篇文章也问同样的问题:Cannot find module '@app/common' error when e2e testing

相关问题