【发布时间】:2021-03-02 22:41:25
【问题描述】:
我使用 NestJS 框架和 typeorm。使用数据库时,所有数据都已成功保存。连接没有问题。我尝试使用 Jest 配置 e2e 测试。不幸的是,我遇到了 2 个错误:
TypeError: Cannot read property 'getHttpServer' of undefined
和
找不到“用户”的存储库。看起来这个实体没有在当前的“默认”连接中注册?
我尝试使用 tutorial 设置测试环境。
我的文件:
app.e2e-spec.ts
import { Test, TestingModule } from '@nestjs/testing';
import { INestApplication } from '@nestjs/common';
import * as request from 'supertest';
import { AppModule } from '../src/app.module';
import { TypeOrmModule } from '@nestjs/typeorm';
describe('AppController (e2e)', () => {
let app: INestApplication;
beforeAll(async () => {
const moduleFixture: TestingModule = await Test.createTestingModule({
imports: [
AppModule,
TypeOrmModule.forRoot({
'type': 'mssql',
'host': 'localhost',
'port': 1433,
'username': 'gift_draw_db',
'password': '',
'database': 'gift_draw_local',
'entities': ['./**/*.entity.ts'],
'synchronize': false,
}),
],
providers: [],
}).compile();
app = moduleFixture.createNestApplication();
console.error(process.env.DB_DATABASE_NAME, '<------------------------------'); // NEVER SEEN THIS
await app.init();
});
afterAll(async () => {
await app.close();
});
it('/api/ (GET)', async () => {
return request(app.getHttpServer()) // 1st error
.get('/api/')
.expect(200)
.expect('Working!');
});
});
app.module.ts
@Module({
imports: [
ConfigModule,
AuthModule,
DrawModule,
UserModule
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
user.e2e-spec.ts
describe('User', () => {
let app: INestApplication;
let repository: Repository<User>;
beforeAll(async () => {
const module = await Test.createTestingModule({
imports: [
UserModule,
TypeOrmModule.forRoot({
'type': 'mssql',
'host': 'localhost',
'port': 1433,
'username': 'gift_draw_db',
'password': '',
'database': 'gift_draw_local',
'entities': ['./**/*.entity.ts'],
'synchronize': false,
}),
],
}).compile();
app = module.createNestApplication();
repository = module.get('UserRepository');
await app.init();
});
afterEach(async () => {
await repository.query(`DELETE FROM users;`);
});
afterAll(async () => {
await app.close();
});
});
user.module.ts
@Module({
controllers: [UserController],
imports: [TypeOrmModule.forFeature([User])],
providers: [UserService],
exports: [UserService, TypeOrmModule],
})
export class UserModule {
}
config.module.ts
@Module({
imports: [
NestConfigModule.forRoot({
isGlobal: true,
load: [configuration]
}),
TypeOrmModule.forRoot(process.env.NODE_ENV === 'production' ? {...configProd} : {...configDev} )
],
})
export class ConfigModule {
}
ConfigModule 具有与测试相同的凭据。
【问题讨论】:
-
类似的问题发生在 mongodb / mongodb-memory-sever
标签: nestjs e2e-testing typeorm