用于在测试环境中配置端点的 PhoneGap/Cordova 隐藏选项

Posted

技术标签:

【中文标题】用于在测试环境中配置端点的 PhoneGap/Cordova 隐藏选项【英文标题】:PhoneGap/Cordova hidden option to configure endpoints in test environments 【发布时间】:2014-05-14 10:48:10 【问题描述】:

当您的要求是签署并发送同一个包时,您如何测试混合应用程序?您的 AJAX 调用将转到一个硬编码的 URL,但实际上该端点在测试和生产环境中需要不同。

覆盖主机文件不是一个选项,因为它需要 root 所有测试设备。 提供和托管自定义 DNS 服务器或 HTTP 代理有点过头了。 有一个应用程序选项是违反要求的,最终用户不能接触到这样的设置。 有一个 cookie 来选择性地覆盖 URL 会起作用,但是如何手动将 cookie 添加到在平板电脑上运行的混合应用程序中? 有一个本地存储设置可以选择性地覆盖 URL,但如何手动更改本地存储?

有没有办法让最终用户设置但隐藏应用程序配置选项?

测试是在运行原生应用包的 ios 平板电脑上进行的。

【问题讨论】:

【参考方案1】:

如果您真的真的想始终发送完全相同的代码,您可以轻松使用本地存储。在您的应用中:

if(!localStorage.getItem('env')) localStorage.setItem('env', 'production');
switch(localStorage.getItem('env') 
    case 'testing': endpoint = 'http://testserver'; break;
    case 'production': endpoint = 'http://productionserver'; break;

然后只需打开浏览器控制台并输入:

localStorage.setItem('env', 'testing');

您可能无法在移动浏览器或 Cordova 中打开控制台,但如果您真的需要:请重新考虑“相同的包”。我想不出您不想进行不同的测试和生产构建的任何正当理由。

【讨论】:

我已经多次看到“微不足道的更改”、“仅配置更改”、“无法破坏任何更改”在 prod 中引入了致命问题。强制签署和发布完全相同的资产非常有意义。您的里程可能会有所不同,具体取决于您的主题对业务的关键程度(考虑金钱和客户)。我正在研究如何在 iOS 平板电脑上打开控制台...github.com/phonegap/phonegap/wiki/Debugging-in-PhoneGap 您建议将 localstorage 与远程控制台结合使用可以得到解决方案:***.com/questions/4022152/…

以上是关于用于在测试环境中配置端点的 PhoneGap/Cordova 隐藏选项的主要内容,如果未能解决你的问题,请参考以下文章

使用Mocked REST API测试环境

用于 CORS 请求的 webpack-dev-server 配置

如何构建Spring Boot Atomikos测试配置?

tomcat 测试环境多实例配置搭建

在环境阶段更改端点路由

如何将 Amplify 配置为使用多个 AppSync 端点?