模拟重定向的 HEAD 请求(通过 nock 模块)
Mock a HEAD request for a redirect (via nock module)
在我的项目中,我尝试扩展推文以使其完全显示。被 bit.ly 缩短的链接被代码的和平扩展(在@Whosebug 找到)。
function expandUrl(shortUrl,callback) {
debug("expandUrl");
request( { method: "HEAD", url: shortUrl, followAllRedirects: true },
function (error, response) {
if (error) return callback(null,shortUrl);
return callback(null,response.request.href);
}
);
}
为了在 mocha 测试期间不需要在线,我想在这部分代码中加入以下内容:
nock('http://bit.ly')
.intercept("/1Ghc7dI","HEAD")
.reply(200,undefined,{location:"http://discoverspatial.com/courses/qgis-for-beginners"});
但这不起作用。 response.request.href 在这份工作之后是 "undefined"。 (我试过 href 而不是 location,这没有区别。
要提供重定向,您需要将状态设置为 HTTP URL 重定向状态,如@apsillers 在评论中所说。此外,如果您不想在线,您还需要点击目的地 url,因为请求将调用它来检查它是否不是重定向:
nock('http://bit.ly')
.intercept("/1Ghc7dI","HEAD")
.reply(301,undefined,{location:"http://discoverspatial.com/courses/qgis-for-beginners"});
nock('http://discoverspatial.com')
.intercept("/courses/qgis-for-beginners", "HEAD")
.reply(200,"OK");
在我的项目中,我尝试扩展推文以使其完全显示。被 bit.ly 缩短的链接被代码的和平扩展(在@Whosebug 找到)。
function expandUrl(shortUrl,callback) {
debug("expandUrl");
request( { method: "HEAD", url: shortUrl, followAllRedirects: true },
function (error, response) {
if (error) return callback(null,shortUrl);
return callback(null,response.request.href);
}
);
}
为了在 mocha 测试期间不需要在线,我想在这部分代码中加入以下内容:
nock('http://bit.ly')
.intercept("/1Ghc7dI","HEAD")
.reply(200,undefined,{location:"http://discoverspatial.com/courses/qgis-for-beginners"});
但这不起作用。 response.request.href 在这份工作之后是 "undefined"。 (我试过 href 而不是 location,这没有区别。
要提供重定向,您需要将状态设置为 HTTP URL 重定向状态,如@apsillers 在评论中所说。此外,如果您不想在线,您还需要点击目的地 url,因为请求将调用它来检查它是否不是重定向:
nock('http://bit.ly')
.intercept("/1Ghc7dI","HEAD")
.reply(301,undefined,{location:"http://discoverspatial.com/courses/qgis-for-beginners"});
nock('http://discoverspatial.com')
.intercept("/courses/qgis-for-beginners", "HEAD")
.reply(200,"OK");