- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在实习生如何运行测试和尝试测试使用 jQuery 的 AJAX 调用的单元方面遇到了问题。由于 Intern 将测试客户端提供给 WebDriver 服务器(在本例中为 phantomjs --webdriver=8910
),我最终在 localhost:9000
上运行测试。这显然会导致同源策略问题。
我可以解决这个问题并发出跨域请求,但是一旦需要身份验证 cookie,我就会被阻止,因为显然我们的后端没有为 localhost
设置 cookie,所以我无权访问这些 cookie。
我已经尝试更改 proxyUrl
选项以在几个不同的排列中指向我们的服务器,但到目前为止没有任何效果:
https://my.server.com/
https://my.server.com/js/
https://my.server.com/js/intern/
https://my.server.com/js/intern/client.html
https://my.server.com/js/intern/client.html?config=tests/intern
观察 WebDriver 日志,我注意到 Intern 告诉服务器加载 http://localhost:9000/__intern/client.html?config=...
。然后我尝试将 proxyUrl
设置为 https://my.server.com/js/
并将符号链接(symbolic link) __intern
设置为 intern
,但要么测试没有运行,要么没有将它们报告回 runner.js
。当我以这种方式运行时,PhantomJS 日志看起来像这样:
[DEBUG - 2013-05-24T15:17:50.930Z] SessionReqHand - _postUrlCommand - Session '194ff0a0-c485-11e2-9c64-9986b0c95ae1' is about to load URL: https://my.server.com/js/__intern/client.html?config=tests%2Fintern&sessionId=194ff0a0-c485-11e2-9c64-9986b0c95ae1&reporters=webdriver
[DEBUG - 2013-05-24T15:17:50.943Z] Session [194ff0a0-c485-11e2-9c64-9986b0c95ae1] - _execFuncAndWaitForLoadDecorator - Page Loading in Session: true
[DEBUG - 2013-05-24T15:17:50.962Z] Session [194ff0a0-c485-11e2-9c64-9986b0c95ae1] - _oneShotCallback - onLoadFinished
[DEBUG - 2013-05-24T15:17:50.962Z] Session [194ff0a0-c485-11e2-9c64-9986b0c95ae1] - _execFuncAndWaitForLoadDecorator - onLoadFinished: success
[DEBUG - 2013-05-24T15:17:51.051Z] Session [194ff0a0-c485-11e2-9c64-9986b0c95ae1] - _execFuncAndWaitForLoadDecorator - Page Loading in Session: false
[DEBUG - 2013-05-24T15:17:51.051Z] Session [194ff0a0-c485-11e2-9c64-9986b0c95ae1] - _resetOneShotCallbacksDecorator
[DEBUG - 2013-05-24T15:17:51.052Z] SessionReqHand - _SuccessHandler - status: success
[DEBUG - 2013-05-24T15:17:51.184Z] Session [194ff0a0-c485-11e2-9c64-9986b0c95ae1] - page.onConsoleMessage - Tests complete
然后测试运行程序挂起并且永远不会收到测试结果,但是,因为 proxyUrl
没有指向 Intern 运行的代理服务器。
编辑 5/28
值得一提的是,很多这种情况都可以通过后端修改来规避(尽管理想情况下,测试堆栈应该是可配置的以适应代码库,而不是强制代码库符合),但我们只是说在这个在这种情况下,这不是一种选择。
理想情况下,我希望 Intern 可以配置为从指定的 URL 加载 client.html
,然后让报告者通过一些交叉 POST 到 localhost:9000
代理-origin-compatible 意味着,比如 JSONP。我找不到任何其他合理的替代方案,所以目前看来 Intern 根本不完全支持通过 AJAX 与后端通信的单元测试。
最佳答案
当您更改实习生代理的 URL 以指向另一台服务器时,它需要是实际代理回运行在 localhost:9000
的实习生服务器的服务器。它不能只是带有指向实习生目录的符号链接(symbolic link)的普通 Web 服务器。
这样做与任何其他类型的代理到另一个后端(CouchDB、Apache、Node.js,等等)是一样的。对于 nginx,这意味着使用 HttpProxyModule到 proxy_pass http://localhost:9000/;
。对于 Apache ,mod_proxy和 ProxyPass/http://localhost:9000/
。请记住,如果您不允许 Intern 服务器为您的 JavaScript 提供服务(即您只代理到 __intern
),您将不会收到代码覆盖率数据,因此最好代理除服务之外的所有内容您尝试测试的网址。
有关代理 Intern 以测试 Web 服务的更多完整信息,请参见维基页面 Using Intern to unit test Ajax calls .
关于javascript - 实习生 AJAX 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16739642/
当前,我们在为 JS 测试套件运行 Intern 测试运行程序时遇到以下错误。 fatal error :CALL_AND_RETRY_LAST 分配失败 - 进程内存不足 此错误发生在任何测试信息通
我在 intern-geezer 中运行了一个测试循环,一百个非常相似的测试中约有二十个成功运行。然后突然: FATAL ERROR ReferenceError: window is not def
为什么 Python 的 intern 只针对字符串内置?应该可以将 intern 扩展到可哈希和可比较的类,对吧? 最佳答案 实习事物的目的是能够通过比较它们的内存地址来比较它们;您确保永远不会创建
使用 Selenium 驱动程序,IE 在 session 之间保持登录状态,而 FF 和 Chrome 则不然。我想根据“已登录”元素 ID 的存在在测试中执行一些附加命令。 如何根据实习生中的条件
我正在使用以下代码运行我的实习生测试 node node_modules/intern/runner.js config=tests/intern 在我的本地计算机上。该应用程序正在使用 Dojo。基
我有一个有2个功能套件的项目,结构是这样的: - /tests --- /sign ------ sign.js --- /buy ------ buy.js --- intern.js - /nod
我有一个结果集,其中包含证券交易所及其所在国家/地区的列表。尽管如此,在我的数据库中,并非每个 Cxchange 都有一个country_id,因此在创建 Exchange 对象时,其中一堆具有cou
我在实习生如何运行测试和尝试测试使用 jQuery 的 AJAX 调用的单元方面遇到了问题。由于 Intern 将测试客户端提供给 WebDriver 服务器(在本例中为 phantomjs --we
我在一个包中加载测试时遇到问题,该包的依赖项是被测试包的 sibling 。 目前提交的乱码在https://github.com/lbod/delite/tree/intern-bforbes-se
我尝试更改完整的 CSS 代码(如样式浏览器)。 第一个解决方案 new_css = ' body {color:#00ff00; } #div { border: 1px solid red; }'
短版:如果调用string.substring(n,m).intern(),字符串表是保留子字符串还是保留原字符串? ...但我不确定这是一个正确的问题,所以这里是长版本: 我正在使用遗留 Java
如何模拟此功能?使用 WaitForDeletedById 似乎是一种有意识的选择,但反过来却不行。 在 ajax 加载后,我如何才能等待页面上存在新元素,而不是不存在新元素? 最佳答案 使用setF
当我尝试从我的测试文件目录中运行实习生测试时看到此错误消息。目录的(相关)结构是: 测试 资源 休息 pickup.js 现金管理.js gitignore intern.js packages.js
我正在为我们构建的具有“只读”功能的自定义下拉控件编写功能测试。我们为此提出的原始测试计划是确保单击下拉菜单时不会绘制“列表”,这是通常会发生的情况。在绘制列表之前,列表的标记并不存在于 DOM 中。
我正在尝试让 intern-cucumber 插件正常工作。我收到以下错误: Error: A plugin named "cucumber" has not been registered at
我在新安装和更新的 Windows 8.1 N x64 VM 上运行 VS2015 CTP6。 Hyper-V support is enabled , hypervisor.cpuid.v0 = "
为简单起见,假设我有以下 DOM 结构: A B C
我对这个本来很简单的问题越来越绝望。 执行: bdd.it('works', function() { return this.remote .get(
我最近开始使用 Intern js 和 Saucelabs 进行 ui 测试。想要在所有浏览器中进行测试,显然 Firefox 也不排除。 这是我的 gruntfile 配置: run
我正在尝试通过运行 headless Chrome 浏览器进行测试来使用 Intern 4 进行功能测试。我相信一切都设置正确,并且最近为 Mac 终端安装了 selenium-server-stan
我是一名优秀的程序员,十分优秀!