编辑:这是我早期提出的一个老问题。查看文档可以立即解决这个问题(所以这不应该与任何人相关)。
我正在尝试对 NestJS API 中的某些功能进行单元测试。
我利用
nestjsx-automapper
。仅在测试使用映射的任何服务时才会发生异常。我用 @nestjs/testing
和 jest
。
我已经成功地复制了这个测试中的错误:
describe('UserController', () => {
let userServiceInterface: UserServiceInterface;
beforeEach(async () => {
const app: TestingModule = await Test.createTestingModule({
imports: [AutomapperModule.withMapper('user')],
providers: [
{
provide: 'UserServiceInterface',
useClass: UserService,
},
],
}).compile();
userServiceInterface = app.get<UserServiceInterface>(
'UserServiceInterface',
);
});
describe('find', () => {
it(`should return user with name 'pipo'`, () => {
const user = userServiceInterface.find('pipo');
expect(user.username).toBe('pipo');
});
});
});
我一直在寻找不同的方法来配置配置文件,但导入它们是我找到的唯一方法。
提前致谢。
我弄清楚了 Nestjsx-automapper 如何加载配置文件。 由于您无法在模块中提供配置文件,因此您依赖于应用程序首先运行配置文件,并且由 Nestjsx-automapper 中的 AutomapperModule 处理。
我不知道为什么 Nest 模块会加载 AutomapperModule 并因此加载配置文件,但测试模块不会,我将不得不更多地使用 Nest 来理解它。
要告诉测试模块在 init 时加载 AutomapperModule(默认情况下不会),请使用:
moduleRef.get(AutomapperModule).onModuleInit();