【发布时间】:2019-06-26 21:16:38
【问题描述】:
我使用 NestJS 框架。使用 @nestjs/typeorm 时,我会创建一个包含用户的存储库。使用这种方法来创建存储库,我的 e2e 测试。使用数据库时,所有数据都已成功保存。连接没有问题。这是我的文件:
app.module.ts
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Connection } from 'typeorm';
import { AuthModule } from './modules/auth/auth.module';
@Module({
imports: [
TypeOrmModule.forRoot(),
AuthModule,
],
})
export class AppModule {
constructor(private readonly connection: Connection) { }
}
auth.module.ts
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AuthService } from './auth.service';
import { AuthController } from './auth.controller';
import { Users } from '../../entity/Users';
@Module({
imports: [TypeOrmModule.forFeature([Users])],
controllers: [AuthController],
providers: [AuthService],
})
export class AuthModule {}
auth.service.ts
...
// my repo
constructor(
@InjectRepository(Users)
private readonly usersRepository: Repository<Users>,
) { }
...
app.e2e-spec.ts
import { INestApplication } from '@nestjs/common';
import { Test } from '@nestjs/testing';
import * as request from 'supertest';
import { AppModule } from './../src/app.module';
describe('AppController (e2e)', () => {
let app: INestApplication;
beforeAll(async () => {
const moduleFixture = await Test.createTestingModule({
imports: [AppModule],
}).compile();
app = moduleFixture.createNestApplication();
await app.init();
});
it('/ (GET)', () => {
return request(app.getHttpServer())
.get('/')
.expect(404)
.expect('{"statusCode":404,"error":"Not Found","message":"Cannot GET /"}'); //todo fix me
});
});
一切都是按照文档编写的。当您运行 npm run test:e2e 时,控制台会出现以下错误:
> project@0.0.0 test:e2e
> jest --config ./test/jest-e2e.json
[Nest] 7206 - 2/2/2019, 5:06:52 PM [TypeOrmModule] Unable to connect to the database. Retrying (1)...
Error: getaddrinfo ENOTFOUND postgres postgres:5432
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:57:26)
[Nest] 7206 - 2/2/2019, 5:06:55 PM [TypeOrmModule] Unable to connect to the database. Retrying (2)... +3234ms
Error: getaddrinfo ENOTFOUND postgres postgres:5432
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:57:26)
FAIL test/app.e2e-spec.ts (6.198s)
AppController (e2e)
✕ / (GET) (6ms)
● AppController (e2e) › / (GET)
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (../node_modules/jest-jasmine2/build/queue_runner.js:41:52)
● AppController (e2e) › / (GET)
TypeError: Cannot read property 'getHttpServer' of undefined
17 |
18 | it('/ (GET)', () => {
> 19 | return request(app.getHttpServer())
| ^
20 | .get('/')
21 | .expect(404)
22 | .expect('{"statusCode":404,"error":"Not Found","message":"Cannot GET /"}'); // todo fix me
at Object.<anonymous> (app.e2e-spec.ts:19:24)
请帮帮我!
【问题讨论】:
-
>无法连接到数据库。错误:getaddrinfo ENOTFOUND postgres postgres:5432
-
你用什么来配置你的数据库连接?它取决于环境吗?运行测试的环境是否能够连接到该数据库? (例如,您是否在 docker 中运行测试,而 docker 无权访问该数据库?)
-
我也有同样的问题
标签: javascript typescript e2e-testing nestjs typeorm