我需要模拟客户端HTTP请求.我isomorphic-fetch
在客户端使用mocha
,我正在使用并nock
进行测试和嘲笑.我的所有客户请求都基于相对路径.由于这个原因,我无法提供主机名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项目中,我通过在设置为' http:// localhost '时将fetch url添加到前面来解决这个问题.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设置为'test'