具有Content-Type
状态时,200 OK
很容易进行测试。我们这样做:
it('should list All permissions on /permissions GET', (done)=> {
supertest(app)
.get('/permissions')
.expect('Content-Type', /json/)
.end( (err, res)=> {
// SOME CODE HERE
done(err)
})
})
所以.expect('Content-Type', /json/)
为我做这份工作。现在,当我有DELETE
请求时,我希望没有内容可以取回。状态为204 NO CONTENT
,没有任何内容。
但是当没有内容时,Content-Type
就不存在了。检查是否存在Content-Type
标题是正确的方法吗?如何使用supertest
?
答案 0 :(得分:1)
如果要检查标题不存在,可以使用基于泛型函数的expect()
进行自定义断言:
.expect(function(res) {
if (res.headers['Content-Type'])
return new Error('Unexpected content-type!');
})
如果你还想检查没有身体:
.expect(204, '')
答案 1 :(得分:1)
当您从服务器发回HTTP 204 status code时,正文中不应包含任何内容。大多数服务器实现,即。 express,restify将不包含此状态代码的Content-Type标头。
对于使用supertest的测试,您应该使用expect来检查HTTP状态代码。 即:
.expect(204)