如何使用Testacular + AngularJS测试外部服务的应用程序

时间:2012-11-29 17:28:42

标签: javascript angularjs jasmine karma-runner

我在http://localhost:6543上运行了一个应用程序 - 它是一个金字塔应用程序。

  • 此应用程序在/
  • 上提供AngularJS应用程序
  • 此应用使用socket.io本身

问题是:是否可以使用这些工具测试该应用程序?

我在scenario.js文件中有这个:

beforeEach(function() {
   browser().navigateTo('http://localhost:6543/');
});

但是当我启动testacular(使用runstart)时,我收到此错误消息:

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相同的问题。

感谢这些出色的工具,顺便说一句!

2 个答案:

答案 0 :(得分:5)

而不是

beforeEach(function() {
    browser().navigateTo('http://localhost:6543/');
});

将此更改为

beforeEach(function() {
    browser().navigateTo('/');
});

然后在你的testacular-e2e.conf.js文件中添加:

proxies = {
    '/': 'http://localhost:6543/'
};

您可能还有其他问题,但我可以重现"沙盒错误:应用程序文档无法访问。"仅包含Pyramid Hello World App和此配置问题的消息。

答案 1 :(得分:2)

我们遇到了类似的问题,并且已经有代理和navigateTo('/')。我们需要添加一些urlRoot以避免在加载socket.io时发生冲突。我们只是添加'/ e2e',这足以解决冲突。实际上,在针对此问题运行testacular时会出现警告消息。

相关问题