关闭应用程序的 JestJS 测试不起作用
The test with JestJS that closes the application does not work
朋友们,我有问题了!
我正在使用 NestJS 测试我的 API。
我正在使用 Jest 进行测试。不幸的是,我遇到了以下错误:
TypeError: Cannot read properties of undefined (reading 'close')
这个错误非常明显,但我不知道它可能来自哪里。
你有什么想法吗?
我当前的代码:
import * as pactum from 'pactum';
import { Test } from '@nestjs/testing';
import { AppModule } from '../src/app.module';
import { INestApplication, ValidationPipe } from '@nestjs/common';
import { PrismaService } from '../src/prisma/prisma.service';
import { AuthDto } from '../src/auth/dto';
describe('App e2e', () => {
let app: INestApplication;
let prisma: PrismaService;
beforeAll(async () => {
const moduleRef = await Test.createTestingModule({
imports: [AppModule],
}).compile();
const app = moduleRef.createNestApplication();
app.useGlobalPipes(
new ValidationPipe({
whitelist: true,
}),
);
await app.init();
await app.listen(3334);
prisma = app.get(PrismaService);
await prisma.cleanDatabase();
});
afterAll(async () => {
console.log('Closing server');
await app.close(); // <------------- THE PROBLEM ARISES HERE.
});
describe('Auth', () => {
describe('Signup', () => {
it('should signup a user', () => {
const dto: AuthDto = {
email: 'darrel.doe@mail.com',
password: '1234',
};
return pactum
.spec()
.post('http://localhost:3333/auth/signup')
.withBody(dto)
.expectStatus(201);
});
});
describe('Signin', () => {
it.todo('should signin a user');
});
});
});
您正在混合不同范围内的两个变量。
let app: INestApplication;
是您实际使用的上限范围,因为它没有分配任何值,所以它是 undefined
。内部的是不同的,因为你在另一个范围内定义。
解决方法很简单,只需从const app = moduleRef.createNestApplication();
中删除const
朋友们,我有问题了!
我正在使用 NestJS 测试我的 API。 我正在使用 Jest 进行测试。不幸的是,我遇到了以下错误:
TypeError: Cannot read properties of undefined (reading 'close')
这个错误非常明显,但我不知道它可能来自哪里。
你有什么想法吗?
我当前的代码:
import * as pactum from 'pactum';
import { Test } from '@nestjs/testing';
import { AppModule } from '../src/app.module';
import { INestApplication, ValidationPipe } from '@nestjs/common';
import { PrismaService } from '../src/prisma/prisma.service';
import { AuthDto } from '../src/auth/dto';
describe('App e2e', () => {
let app: INestApplication;
let prisma: PrismaService;
beforeAll(async () => {
const moduleRef = await Test.createTestingModule({
imports: [AppModule],
}).compile();
const app = moduleRef.createNestApplication();
app.useGlobalPipes(
new ValidationPipe({
whitelist: true,
}),
);
await app.init();
await app.listen(3334);
prisma = app.get(PrismaService);
await prisma.cleanDatabase();
});
afterAll(async () => {
console.log('Closing server');
await app.close(); // <------------- THE PROBLEM ARISES HERE.
});
describe('Auth', () => {
describe('Signup', () => {
it('should signup a user', () => {
const dto: AuthDto = {
email: 'darrel.doe@mail.com',
password: '1234',
};
return pactum
.spec()
.post('http://localhost:3333/auth/signup')
.withBody(dto)
.expectStatus(201);
});
});
describe('Signin', () => {
it.todo('should signin a user');
});
});
});
您正在混合不同范围内的两个变量。
let app: INestApplication;
是您实际使用的上限范围,因为它没有分配任何值,所以它是 undefined
。内部的是不同的,因为你在另一个范围内定义。
解决方法很简单,只需从const app = moduleRef.createNestApplication();
const