NodeJs 服务器请求测试
NodeJs Server Request Testing
为了测试我的 NodeJs 服务器,我使用了 mocha 和 supertest。
但我不喜欢我测试的简单性,它们实际上没有正确检查服务器。
// simple test
describe('Server GET requests', function() {
it('GET /index', function(done){
request(app)
.get('/')
.expect(200, done)
})
})
所以测试只是检查服务器是否有对请求的响应,而不是检查响应的正确性。我希望测试看起来像这样:
// test should be
describe('Server GET requests', function() {
it('GET /index', function(done){
request(app)
.get('/')
.expect(200)
.end(function (err, res) {
if (err != null)
done(err);
checkContentTitle('Home Page', res.text);
checkContent(params, res.text);
done();
})
})
})
// function to check the title of the send result
function checkContentTitle(title, htmlText){
// checkTitle(title, parse('title', htmlText));
}
但我找不到合适的方法。
测试服务器响应(例如 GET 请求响应)的最佳做法是什么?
我想我需要一些像 html\DOM 解析器这样的工具来获取特定的标签?有人可以建议合适的工具吗?
试试 cheerio 库:
它像 jquery 一样用于选择 DOM 个元素,非常容易使用。
您可以将 cheerio 返回值与您想要的断言进行比较。
test/test.js 示例:
var assert = require("assert");
var cheerio = require('cheerio');
var request = require('request');
describe('domtesting', function() {
describe('GET /', function () {
it('title must be Hello', function (done) {
request('http://example.com/',function(err,response,html){
if(!err){
var $ = cheerio.load(html);
assert.equal('Hello', $('title').text());
done();
}
else{
console.log(err);
}
})
});
});
});
使用命名函数或 mocha promise 语法以获得更具可读性和可维护性的代码。我还使用 request 库在测试中启动 http 请求。
为了测试我的 NodeJs 服务器,我使用了 mocha 和 supertest。 但我不喜欢我测试的简单性,它们实际上没有正确检查服务器。
// simple test
describe('Server GET requests', function() {
it('GET /index', function(done){
request(app)
.get('/')
.expect(200, done)
})
})
所以测试只是检查服务器是否有对请求的响应,而不是检查响应的正确性。我希望测试看起来像这样:
// test should be
describe('Server GET requests', function() {
it('GET /index', function(done){
request(app)
.get('/')
.expect(200)
.end(function (err, res) {
if (err != null)
done(err);
checkContentTitle('Home Page', res.text);
checkContent(params, res.text);
done();
})
})
})
// function to check the title of the send result
function checkContentTitle(title, htmlText){
// checkTitle(title, parse('title', htmlText));
}
但我找不到合适的方法。
测试服务器响应(例如 GET 请求响应)的最佳做法是什么? 我想我需要一些像 html\DOM 解析器这样的工具来获取特定的标签?有人可以建议合适的工具吗?
试试 cheerio 库:
它像 jquery 一样用于选择 DOM 个元素,非常容易使用。
您可以将 cheerio 返回值与您想要的断言进行比较。
test/test.js 示例:
var assert = require("assert");
var cheerio = require('cheerio');
var request = require('request');
describe('domtesting', function() {
describe('GET /', function () {
it('title must be Hello', function (done) {
request('http://example.com/',function(err,response,html){
if(!err){
var $ = cheerio.load(html);
assert.equal('Hello', $('title').text());
done();
}
else{
console.log(err);
}
})
});
});
});
使用命名函数或 mocha promise 语法以获得更具可读性和可维护性的代码。我还使用 request 库在测试中启动 http 请求。