onvno / pokerface

日常技术文章阅读整理
3 stars 0 forks source link

20190605 - Node单元测试 #37

Open onvno opened 5 years ago

onvno commented 5 years ago

进行一定的单元测试必要性

验证代码的正确性 避免修改代码时出错 避免其他团队成员修改代码时出错 便于自动化测试与部署

单元测试工具

单元测试基本demo

function add(a, b){ if (typeof a === "number" && typeof b === "number") { return a + b; } else { return undefined; }}

* mocha测试
> 测试代码中使用了测试框架Mocha提供的it函数,3个it函数分别测试了3种不同的案例(test case)。it函数的第1个参数为字符串,用于描述测试,一般会写期望得到的结果,例如”should return 3”; 而第2个参数为函数,用于编写测试代码,一般是先调用被测试的函数或者API,获取结果之后,使用断言库判断执行结果是否正确。

var add = require("../add2.js"); var assert = require("assert");

// 当2个参数均为整数时 it("should return 3", function() { var sum = add(1, 2); assert.equal(sum, 3); });

// 当第2个参数为String时 it("should return undefined", function() { var sum = add(1, "2"); assert.equal(sum, undefined); });

// 当只有1个参数时 it("should return undefined", function() { var sum = add(1); assert.equal(sum, undefined); });

使用mocha执行test2.js:

$ mocha test/test2.js


#### 测试HTTP接口 - SuperTest
* server.js

var http = require("http");

var server = http.createServer((req, res) => { res.writeHead(200, { "Content-Type": "text/plain" });

res.end("Hello Fundebug");

});

server.listen(8000);

* 基本测试

require("../server.js"); var http = require("http"); var assert = require("assert");

it("should return hello fundebug", function(done) { http.get("http://localhost:8000", function(res) { res.setEncoding("utf8"); res.on("data", function(text) { assert.equal(res.statusCode, 200); assert.equal(text, "Hello Fundebug"); done(); }); }); });

* suptertest简化

var request = require("supertest"); var server = require("../server.js"); var assert = require("assert");

it("should return hello fundebug", function(done) { request(server) .get("/") .expect(200) .expect(function(res) { assert.equal(res.text, "Hello Fundebug"); }) .end(done); });


来自:[玩转Node.js单元测试](https://kiwenlau.com/2017/03/20/nodejs-unit-test/)

#### 补充
* [Node.js API 之 assert 断言](https://www.jianshu.com/p/1fcf4502c619)
* [使用Node.js的断言模块assert进行单元测试](https://itbilu.com/nodejs/core/EkCdxhPD.html)
onvno commented 4 years ago

测试接口汇总:

onvno commented 4 years ago

查看一些库的测试: