如果用 mocha 和 supertest 进行测试:
describe('GET /v1/news/5339a146d46d35ebe953030a --test', function(){
it('respond with json', function(done){
request(app)
.get('/v1/news/5339a146d46d35ebe953030a')
.set('Accept', 'application/*')
.set('DEV-ROLE', 'test')
.expect('Content-Type', /json/)
.send(json)
.expect(200)
.expect(function(res) {
//THIS FUNCTION RESULT IN A TIMEOUT IF NO ERROR IS THROWN
if(!('item' in res.body)) throw new Error("missing item key");
})
.end(function(err, res){
if (err) return done(err);
done()
});
})
})
我想测试生成的主体,但我总是超时运行。如果发生错误,我可以抛出错误,那很好。但是,如果没有发生错误,如果我没有像文档中描述的那样返回,我会遇到超时:
传递自定义断言函数。它将被赋予要检查的响应对象。如果响应正常,它应该返回 falsy,最常见的是不返回任何内容。如果检查失败,则抛出错误或返回一个真实值,如将变成错误的字符串
即时文档示例:
request(app)
.get('/')
.expect(hasPreviousAndNextKeys)
.end(done);
function hasPreviousAndNextKeys(res) {
if (!('next' in res.body)) return "missing next key";
if (!('prev' in res.body)) throw new Error("missing prev key");
}
我使用版本 0.12.1