1.3 nest.js使用supertest单元测试及e2e测试

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)
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值