我正在使用Supertest(以及Superagent)对Node.js项目进行一些API测试。我有一个特定的路由,根据请求的类型返回不同的内容。使用expressJS的req.xhr
,如果为true,代码将返回JSON,如果为false,则返回重定向。我想在我的测试中考虑到这一点,但我很难让Superagent模仿XHR GET请求。
根据ExpressJS文档,它正在寻找要设置为值X-Requested-With
的请求中的XMLHttpRequest
标头。当我尝试使用.set('X-Requested-With', 'XMLHttpRequest')
设置此标头时,我得到了
Unhandled rejection Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:344:11)
奇怪的是,我可以设置其他标题,甚至在此之前,就好了
.set('Accept', 'application/json')
。如果标题已经写入,这也应该失败,但事实并非如此。此外,检查res.request.req._headers
,似乎没有其他设置X-Requested-With
所以它不像其他东西给它一个值。