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: AppServicebeforeEach(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)
})
1.3 nest.js使用supertest单元测试及e2e测试相关推荐
- Webpack单元测试,e2e测试
此篇文章是续 webpack多入口文件.热更新等体验,主要说明单元测试与e2e测试的基本配置以及相关应用. 一.单元测试 实现单元测试框架的搭建.es6语法的应用.以及测试覆盖率的引入. 1. 需要安 ...
- 自动化测试(一)基本介绍——测试框架的分类 单元测试工具 E2E测试工具
自动化测试(一)基本介绍--测试框架的分类 & 单元测试工具 & E2E测试工具 5-3 自动化测试 课程介绍 在前端界,浏览器兼容性是让工程师们头疼的问题,对于经验丰富的人来说,很清 ...
- 单元测试与E2E测试
编写一个最基础的测试 以一个包含 E2E 测试常用操作的测试用例来介绍 Cypress 的基本使用.结合官方文档给的案例一起看风味更佳. 打开.跳转网页:打开 eleme h5 订餐首页 滚动首页餐厅 ...
- 单元测试和E2E测试
单元测试 把代码看成一个个组件,对每个组件进行单独测试 测试内容主要是组件内每一个函数的返回结果是不是和期望值一样 代码覆盖率是指代码中每个函数的每种情况的测试情况 E2E测试 把程序当做黑盒子,对于 ...
- 测试您的neo4j nest js应用程序
This article is one of a series of blog posts that accompany the Livestream on the Neo4j Twitch Chan ...
- 学完这篇 Nest.js 实战,还没入门的来锤我!(长文预警)
大厂技术 高级前端 Node进阶 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 前言 最近一直比较忙, 而且自己工作中做的事也不适合写文章,所以一直没有更文.. 最近接到一 ...
- nest.js学习笔记(一)
nest.js学习笔记(一) 一.安装nest.js 前置条件 运行项目 目录介绍 二.nest.js cli 常用命令 三.RESTful 风格设计 1.接口url 2.RESTful 版本控制 四 ...
- js return 后 运行 另_新手入门Nest.js(六) 控制器Resources、路由通配符
点击上方公众号,可快速关注 作者:鲲鹏友人原文链接:https://www.gowhich.com/blog/1067 Nest.js控制中的Resources 前面介绍了路由中如何通过GET方式访问 ...
- 1. Nest Js
第一步 在这一组文章中, 您将了解 Nest 的核心基础知识.为了了解基本的 nest 应用程序构建模块,我们将构建一个基本的 CRUD 应用程序, 其中的涵盖了大量的基础功能. 语言 我们爱上了 T ...
最新文章
- Centos6.3下rsync+sersync安装配置笔记
- Linux文件锁学习-flock, lockf, fcntl
- 计算机与数字媒体专业概论
- 记录一次elastic-job分片查询及基础概念理解
- QQ登录pc端测试用例
- 基于DEM数据的河流提取
- OBS 录制黑屏的解决方法
- ansys2020视频教程
- Vertica ros和wos介绍
- Qt音视频开发27-Onvif设备搜索
- 助力“双11”智能化物流,顺丰、中通、韵达分享架构改造经验
- 06.奇特的一生评语
- 资深IT经理人的辞职信 - 怀着梦想去远行!- 让自己慢下来(29)
- 云计算面临的安全威胁,主要来自于哪几个方面?
- LightOJ 1079 Just another Robbery
- 【我的渲染技术进阶之旅】Google开源的基于物理的实时渲染引擎Filament源码分析:在android中如何使用cmgen命令自动将.hdr文件转换为.ktx文件或者.rgb32文件等?
- Android应用统计-使用时长及次数统计(一)
- 【Windows11来了】立刻安装Windows11预览版抢先体验(虚拟机 | 含详细安装步骤)
- python return break 区别_python中return和break之间的区别是什么?
- 使用PCA拟合平面(Plane Fitting using PCA)