使用Express

时间:2016-12-19 19:55:49

标签: javascript http express

我正在为Web应用程序构建一些测试,并且我想测试客户端正常处理无效HTTP响应的能力。您如何建议修改响应,使其不再有效?我试过以下但是Express显然后来修复了Content-Length

app.get('/broken/', function(req, res) {
    console.log('request received for ' + req.path);
    res.set('Content-Length', 0).send('more than zero');
});

编辑:要注意,我不一定控制传入的请求。在过去,其中一些是无效的。

2 个答案:

答案 0 :(得分:1)

确实,Express会在response.send方法中重置Content-Length

if (chunk !== undefined) {
  len = chunk.length;
  this.set('Content-Length', len);
}

基本上,send只会设置一堆标题并将其余工作委托给http.ServerResponse.end

为了绕过此行为,您可以直接使用end方法。

app.get('/broken/', function(req, res) {
  res.set('Content-Length', 0)
     .set('Content-Type', type);
     .end('more than zero');
});

答案 1 :(得分:1)

我认为正确的答案(即使你可以解决它)是使用HTTP客户端。任何HTTP客户端都会努力阻止您进行无效的HTTP调用。因此,正确的答案是制作一个故意不符合要求的HTTP客户端,这意味着您需要深入研究编写tcp套接字。即使这意味着这并不完全适合您的测试框架,我认为您只需要一次测试。