如何测试没有内容,而我们有204 NO CONTENT状态,因为没有' Content-Type'标题是什么?

时间:2016-03-28 05:54:23

标签: node.js mocha supertest

具有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

执行此操作 谢谢你的时间。感谢。

2 个答案:

答案 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)