javascript - 相对 URL 作为 Nock 中的主机名

标签 javascript mocha.js nock isomorphic-fetch-api

我需要模拟客户端 HTTP 请求。我在客户端使用 isomorphic-fetch 并使用 mochanock 进行测试和模拟。我所有的客户请求都是基于相对路径的。因此,我无法为 nock 提供主机名。有解决办法吗。

客户端:

fetch('/foo') //hostname: http://localhost:8080
.then(res => res.json())
.then(data => console.log(data))
.catch(e => console.log(e))

测试套件

nock('/')
.get('/foo')
.reply(200, {data: "hello"})

这是失败的,因为我没有为 nock 提供正确的主机名。我做错了什么吗?

最佳答案

对于任何感兴趣的人:在我的 react/webpack 项目中,我通过在获取 url 前加上' http://localhost 来解决这个问题。 ' 当 NODE_ENV 设置为 'test' 时。

例子:

const testing = process.env.NODE_ENV === 'test';
const apiUrl = `${testing ? 'http://localhost' : ''}/api`;

function getStuffFromApi() {
  return fetch(apiUrl, ...)
}

这样,在我的测试中,我总是可以像这样使用 nock:

nock('http://localhost')
  .get('/api')
  .reply(200, {data: 'hello'})

注意:运行我的测试时,NODE_ENV 设置为“测试”

关于javascript - 相对 URL 作为 Nock 中的主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34318341/

相关文章:

node.js - Webdriver - 如何通过 xpath/css 访问某些特定的 iFrame

reactjs - 如何正确测试 React 组件方法

javascript - 从内部回调分配变量

javascript - Fullcalendar js 如何从源代码构建

Javascript 函数工厂嵌套在 jQuery 就绪函数中嵌套的立即函数中

node.js - 使用 Istanbul 和 Mocha 覆盖 ES6 代码

javascript - Mocha/Chai 测试预期与实际对象数组

javascript - 使用 nockjs 和 jest 对 promise /异步单元测试的代码覆盖问题

javascript - 当 url 包含单引号时,如何使用 nock 和 request-promise 测试路由?

javascript - 将数据从 Controller 传递到 Ember 中的路由