2013-03-08 56 views
4

我有一个快递控制器动作“可以”发送内容的情况。如何测试响应是否已设置/发送?

“发送”意指含量发送(HTTP 200)或HTTP状态设置为某事(HTTP状态204或例如重定向)

如果没有被送到/设置默认程序应发出默认内容。

如果快速控制器操作已经设置了内容或设置了状态码,我该如何测试我的默认例程?

+0

你是如何钩住你的 '默认程序'?如果不需要发送任何东西,一个更常见的方法是让你的控制器动作调用next()。 – robertklep 2013-03-08 07:31:04

+0

它更复杂一点...简单的问题是:如何跟踪http状态/内容是否已写入响应? – lgersman 2013-03-08 08:05:04

+0

没有API,只有黑客(比如在你的控制器中设置'res'的自定义属性,或者检查'res.finished'以及所有形式的异步问题以及打破Express更新的可能性)。 – robertklep 2013-03-08 08:12:32

回答

2

response.headersSent应该工作。

例如:

if (response.headersSent) { 
    console.log('Headers sent!') 
} else { 
    console.log('Headers have not been sent.') 
} 
res.writeHead(200); 
if (response.headersSent) { 
    console.log('Headers sent!') 
} else { 
    console.log('Headers have not been sent.') 
} 

与客户端的连接应登录:

Headers have not been sent. 
Headers sent! 
相关问题