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

标签 javascript angularjs jasmine karma-runner

我有一个在 http://localhost:6543 上运行的应用程序 - 它是一个 Pyramid 应用程序。

  • 此应用在/
  • 为 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 中遇到同样的问题。

顺便说一下,感谢这些很棒的工具!

最佳答案

而不是拥有

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/

相关文章:

javascript - Jasmine spyOn - jQuery 匿名函数中不存在方法

javascript - 在 AngularJS 中表中添加的行上显示弹出窗口 3 秒

java - angularjs剩余调用以json格式返回xml

javascript正则表达式匹配城市名

javascript - 数组上的过滤方法无法正常工作

javascript - angularjs 指令和资源概念

javascript - 如何测试依赖于注入(inject)数据的范围变量?

node.js - 通过 phantom 运行 jasmine specs,得到 "Can' t 找到变量 : describe"

javascript - 如何隐藏空面板?

Javascript树遍历函数错误