我有一个在 http://localhost:6543
上运行的应用程序 - 它是一个 Pyramid 应用程序。
- 此应用在/ 为 AngularJS 应用提供服务
- 此应用本身使用 socket.io
问题是:是否可以使用这些工具测试该应用程序?
我的 scenario.js
文件中有这个:
beforeEach(function() {
browser().navigateTo('http://localhost:6543/');
});
但是当我启动 testacular(使用 run
或 start
)时,我收到此错误消息:
Chrome 23.0 registration: should delete all cookies when user clicks on "remove all" button FAILED
browser navigate to 'http://localhost:6543/'
/home/abourget/myapp/jstests/scenarios/registration_scenario.js:9:5: Sandbox Error: Application document not accessible.
所以我知道浏览器不允许访问 iframe
的文档,因为它会违反一些跨源规则。
我尝试过的:
- 使用 Testacular 网络服务器(使用
proxies
选项)代理到我的应用程序,但是/
会与 Testacular 自己的框架服务发生冲突。此外,这两个应用程序最终都会尝试使用/socket.io
,这也会发生冲突。 - 做相反的事情(调整我的应用程序以代理到 Testacular 的服务器),但是,我们会在
/socket.io
中遇到同样的问题。
顺便说一下,感谢这些很棒的工具!
最佳答案
而不是拥有
beforeEach(function() {
browser().navigateTo('http://localhost:6543/');
});
将此更改为
beforeEach(function() {
browser().navigateTo('/');
});
然后在你的 testacular-e2e.conf.js 文件中添加:
proxies = {
'/': 'http://localhost:6543/'
};
您可能还有其他问题,但我可以重现“沙盒错误:无法访问应用程序文档”。仅包含 Pyramid Hello World App 的消息还有这个配置问题。
关于javascript - 如何使用 Testacular + AngularJS 测试外部服务的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13631360/