在 nestjs 测试模块中找不到 nestjsx-automapper 配置文件
nestjsx-automapper profiles not found in nestjs test modules
我正在尝试对 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 处理。
我不知道为什么嵌套模块会加载 AutomapperModule 并因此加载配置文件,但测试模块不会,我将不得不更多地使用 nest 来理解它。
要告诉测试模块在初始化时加载 AutomapperModule(默认情况下它们不会加载),请使用:
moduleRef.get(AutomapperModule).onModuleInit();
我正在尝试对 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 处理。
我不知道为什么嵌套模块会加载 AutomapperModule 并因此加载配置文件,但测试模块不会,我将不得不更多地使用 nest 来理解它。
要告诉测试模块在初始化时加载 AutomapperModule(默认情况下它们不会加载),请使用:
moduleRef.get(AutomapperModule).onModuleInit();