模拟重定向的HEAD请求(通过nock模块)

The*_*ive 2 redirect mocha.js node.js nock

在我的项目中,我尝试扩展推文以完全显示.由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);
    }
  );
}
Run Code Online (Sandbox Code Playgroud)

为了不需要在mocha测试期间联机,我想用以下内容来解决这部分代码:

nock('http://bit.ly')
      .intercept("/1Ghc7dI","HEAD")
      .reply(200,undefined,{location:"http://discoverspatial.com/courses/qgis-for-beginners"});
Run Code Online (Sandbox Code Playgroud)

但这不起作用.在这个工作之后,response.request.href是"未定义的".(我试过href而不是位置,这没什么区别.

bol*_*lav 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");
Run Code Online (Sandbox Code Playgroud)