Open onvno opened 5 years ago
验证代码的正确性 避免修改代码时出错 避免其他团队成员修改代码时出错 便于自动化测试与部署
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)
测试接口汇总:
to be been is that which and has have with at of same but does still .not
查看一些库的测试:
进行一定的单元测试必要性
验证代码的正确性 避免修改代码时出错 避免其他团队成员修改代码时出错 便于自动化测试与部署
单元测试工具
单元测试基本demo
function add(a, b){ if (typeof a === "number" && typeof b === "number") { return a + b; } else { return undefined; }}
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 test/test2.js
var http = require("http");
var server = http.createServer((req, res) => { res.writeHead(200, { "Content-Type": "text/plain" });
});
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(); }); }); });
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); });