2

在我的项目中,我尝试扩展推文以完全显示。被 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 而不是位置,这没有区别。

4

1 回答 1

7

要进行重定向,您需要将状态设置为@apsillers 在评论中所说的 HTTP URL 重定向状态。此外,如果您不想在线,您还需要锁定目标 url,因为 request 会调用它来检查它是否不是重定向:

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");
于 2016-02-17T21:12:29.737 回答