我想使用 Hoverfly 来模拟 API 响应。它是从命令行工作的,但不是从我的实际应用程序中工作的。
即使在像新用户示例这样简单的情况下也存在问题。在教程中,我创建了一个日志:
hoverctl start
hoverctl mode capture
curl --proxy http://localhost:8500 http://time.jsontest.com
hoverctl export simulation.json
hoverctl stop
然后按照下一个教程设置模拟:
hoverctl start
hoverctl import simulation.json
hoverctl mode simulate
curl --proxy localhost:8500 http://time.jsontest.com
这工作正常,按预期显示保存的结果。但是当我试图从我网站的本地开发环境中获得模拟响应时,它失败了。该站点(create-react-app 的略微修改版本)使用 Axios 进行请求,我的组件定义中的相关代码是:
state = {
error: null,
isLoaded: false,
apiData: null
};
componentDidMount() {
let apiUrl = "http://time.jsontest.com";
axios.get(apiUrl, {
proxy: {
host: 'localhost',
port: 8500
}
}).then(
result => {
this.setState({
isLoaded: true,
apiData: result.data
});
}
);
}
当我在我的开发环境中加载页面(即localhost:3000
在浏览器中加载)时,它会发出一个真实的网络请求并从实时 API 获取最新的实际时间,而不是保存在 Hoverfly 中的模拟。
我认为这是某种代理问题,因为代码正在工作,而不是按需要处理请求。文档中似乎没有其他有用的代理选项。如何让我的应用程序使用模拟值?