1、初始化单元测试示例
import { Test, TestingModule } from '@nestjs/testing';
import { AppController } from './app.controller';
import { AppService } from './app.service';
describe('AppController', () => {
let appController: AppController;
beforeEach(async () => {
const app: TestingModule = await Test.createTestingModule({
controllers: [AppController],
providers: [AppService],
}).compile();
appController = app.get<AppController>(AppController);
});
describe('root', () => {
it('getHello', () => {
let a = {
age:18,
name:'wu'
}
expect(appController.getHello()).toBe(JSON.stringify(a));
});
});
});
如下代码也可以修改
const app: TestingModule = await Test.createTestingModule({
controllers: [AppController],
providers: [AppService],
}).compile();
修改为直接导入AppModule
const app: TestingModule = await Test.createTestingModule({
imports:[AppModule]
}).compile();
示例中测试了AppController的getHello方法,也可以直接测试AppService的getHello方法
如下,两者效果一样
import { Test, TestingModule } from '@nestjs/testing';
import { AppService } from './app.service';
import { AppModule } from "./app.module";
describe('AppController', () => {
let appService: AppService
beforeEach(async () => {
const app: TestingModule = await Test.createTestingModule({
imports:[AppModule]
}).compile();
appService = app.get<AppService>(AppService)
});
describe('root', () => {
it('getHello', () => {
let a = {
age:18,
name:'wu'
}
expect(appService.getHello()).toBe(JSON.stringify(a));
});
});
});
运行npm run test时,执行jest命令,jest的配置则使用的是package.json中的jest配置
2、e2e测试
示例
import { Test, TestingModule } from '@nestjs/testing';
import { INestApplication } from '@nestjs/common';
import * as request from 'supertest';
import { AppModule } from './../src/app.module';
describe('AppController (e2e)', () => {
let app: INestApplication;
beforeEach(async () => {
const moduleFixture: TestingModule = await Test.createTestingModule({
imports: [AppModule],
}).compile();
app = moduleFixture.createNestApplication();
await app.init();
});
it('/ (GET)', () => {
return request(app.getHttpServer())
.get('/')
.expect(200)
.expect('Hello World');
});
});
上面的也可以直接导入AppService和AppController
执行npm run test:e2e
jest运行时使用的是jest-e2e.json中的配置
3、supertest示例
执行npm run start:dev,启动本地服务
发送请求
const request = require('supertest')
request('127.0.0.1:3000').get('/cats').expect('Hello World').end(function (err, res) {
console.log(res.text)
})
如果要添加header,可以用set进行链式追加
request('127.0.0.1:3000').get('/api/test').set('cookie','JSESSIONID=adf5e2c3-6a0e-4793-9af1-bc9a93564f21').expect(200).end(function (err, res) {
console.log(res.text)
})