为了测试我的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解析器这样的工具来获取特定的标签?有人可以建议适当的工具吗?
答案 0 :(得分:1)
尝试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请求。