测试用例:supertest
学习中,原文链接
目标
建立一个lesson8项目,在其中编写代码
app.js:其中有个fibonacci接口
fibonacci函数的定义为int fibonacci(int n)
,调用函数的url路径是/fib?n=10
,然后这个接口会返回55
函数的行为定义如下:
- 当
n === 0
时,返回0;n === 1
时,返回1 n > 1
时,返回fibonacci(n) === fibonacci(n-1) + fibonacci(n-2)
,如fibonacci(10) === 55
- n不可大于10,否则抛错,
http status 500
,因为Node.js的计算性能没那么强。 - n也不可小于0,否则抛错500,因为没意义。
- n不为数字时,抛错,500
test/app.test.js:对app的接口进行测试,覆盖以上所有情况
知识点
- 学习supertest的使用
- 复习mocha,should的使用
开始
1 | $ npm init # 来吧,一阵阵的键盘声(不停的回车) |
然后编写安装模块$ npm install xxx --save
和$ npm install xxx --save-dev
是有差异的噢,修改于配置文件中的地方不同噢
1 | "devDependencies": { |
编写代码app.js:
1 | var express = require('express'); |
运行$ node app.js
访问http://localhost:3000/fib?n=10
,看到55就成功了.
访问http://localhost:3000/fib?n=111
,会看到n should <= 10
.
大家可以去安装一个nodemon$ npm install -g nodemon
这个库是专门调试的时候使用,会自动检测Node.js代码的改动,然后帮你自动重启应用
在调试时可以完全用nodemon命令代替node命令
使用$ nodemon app.js
启动我们的应用试试,然后添加两行输出代码,应用自动重启了
现在我们继续写完测试代码,test/app.test.js
:
1 | var app = require('../app'); |
执行$ mocha
,得到结果
关于cookie持久化
- 1.在supertest中,通过
var agent = supertest.agent(app)
获取一个agent对象,这个对象的API跟直接在superagent上调用各种方法是一样的.agent对象在被多次调用get和post之后,可以一路把cookie都保存下来
1 | var supertest = require('supertest'); |
- 2.在发起请求时,调用
.set('Cookie', 'a cookie string')
这样的方式.
1 | var supertest = require('supertest'); |
这里边有非常详细的介绍,可以学习:
https://github.com/cnodejs/nodeclub/blob/master/test/controllers/topic.test.js