如何测试没有内容,而我们有 204 NO CONTENT 状态,因为根本没有 'Content-Type' header?
how test for no content, while we have 204 NO CONTENT status, as there is no 'Content-Type' header at all?
当状态为 200 OK
时,很容易测试 Content-Type
。我们这样做:
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
header 是否存在?如何使用 supertest
?
感谢您抽出宝贵时间。谢谢。
如果您想检查 header 是否 ,您可以使用通用的 function-based expect()
进行自定义断言存在:
.expect(function(res) {
if (res.headers['Content-Type'])
return new Error('Unexpected content-type!');
})
如果你还想检查没有body:
.expect(204, '')
当您从服务器发回 HTTP 204 status code 时,body 中不应有任何内容。大多数服务器实现,即。 express,restify 将不会包含此状态代码的 Content-Type header。
对于使用 supertest 的测试,您应该只使用 expect 检查 HTTP 状态代码。
即:
.expect(204)
当状态为 200 OK
时,很容易测试 Content-Type
。我们这样做:
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
header 是否存在?如何使用 supertest
?
感谢您抽出宝贵时间。谢谢。
如果您想检查 header 是否 ,您可以使用通用的 function-based expect()
进行自定义断言存在:
.expect(function(res) {
if (res.headers['Content-Type'])
return new Error('Unexpected content-type!');
})
如果你还想检查没有body:
.expect(204, '')
当您从服务器发回 HTTP 204 status code 时,body 中不应有任何内容。大多数服务器实现,即。 express,restify 将不会包含此状态代码的 Content-Type header。
对于使用 supertest 的测试,您应该只使用 expect 检查 HTTP 状态代码。 即:
.expect(204)