在我的项目中,我尝试扩展推文以完全显示。通过这种代码的平衡扩展了bit.ly缩短的链接(找到@ stackoverflow)。
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是“未定义的”。 (我试过href而不是位置,这没什么区别。
答案 0 :(得分:6)
要提供重定向,您需要将状态设置为HTTP URL重定向状态,如@apsillers在评论中所述。此外,如果您不想上网,您还需要锁定目标网址,因为请求会调用它来检查它是否不是重定向:
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");