Hoverfly mock 没有被代理的 Axios 请求击中

问题描述

我想使用 Hoverfly 来模拟 API 响应。它可以从命令行运行,但不能从我的实际应用中运行。

即使是像新用户示例这样简单的情况,问题仍然存在。在 the tutorial 中,我创建了一个日志:

hoverctl start
hoverctl mode capture
curl --proxy http://localhost:8500 http://time.jsontest.com
hoverctl export simulation.json
hoverctl stop

然后像 the next tutorial 一样设置模拟:

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 中的模拟。

我认为这是某种代理问题,因为除了没有按需要处理请求之外,代码还在工作。 the docs 中似乎没有其他有用的代理选项。如何让我的应用使用模拟值?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)