如何测试没有内容,而我们有 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)