问题标签 [intern]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 为 Javascript 项目设置实习生
我知道已经回答了几个类似的问题(Test custom JavaScript (not Node module) with Intern and Can't get Intern to run Node.js Module),但即使阅读了这些答案,我仍然无法使用 Intern 运行一些简单的测试。我觉得只有一小块我忽略或丢失了。
我正在尝试评估 Intern 是否与现有的 Javascript 项目一起使用。它不是 Node 项目,只是普通的 Javascript。如果这很重要,我会尝试在 Windows 机器上执行此评估。
我的项目层次结构如下所示:
/li>实习生配置文件:
我对 Node 和 AMD 很陌生,但我相信由于我的项目不是节点项目,我不需要使用 loader.packages 配置?
测试文件 spec_inwf.js
/li>我执行以下命令来尝试运行测试:
我从命令收到的唯一输出是:
/li>
如果我在 Intern 配置中将套件数组设置为空,则在执行 #4 中的命令时会收到消息“0/0 测试通过”。我相信这是正确的输出。但是每当我尝试连接到测试套件时,测试都不会运行。我不确定这个等式还缺少什么。任何帮助,将不胜感激。
intern - 替换实习生中的 Chai 断言库
现在我已经让 Intern 运行一些测试,我想用 expect.js 库替换 Chai 断言库。Expect.js是我使用 NPM 下载到项目中的 Node 模块。我一直在查看以下资源来拼凑如何使用 Intern 提供的 dojo/node 加载器插件导入模块,但我还没有完全掌握它。我要么错误地使用了 loader.packages,要么没有在我的测试文件中使用正确的路径来包含模块。
AMD API Wiki re:包
我的项目层次结构(如果有最佳实践或更好的方法来使用节点模块设置我的项目,我可以轻松更改层次结构)
/li>实习生配置文件
/li>测试文件 - 根据另一个问题的评论,我尝试了不同的方式来引用节点模块。
/li>
我正在尝试替换 Intern 中存在的断言库,以便我可以针对 IE 6 运行测试。我知道有适用于 IE 6-8 的 Intern 的 Geezer 分支,但看起来断言库是两者之间的唯一区别分支,我更喜欢期望语法而不是断言。
intern - waitForCondition 方法永远不会返回?
我正在尝试使用 Intern 编写第一个功能测试,但无法解决以下问题:运行以下测试脚本时
在 chrome 中,使用 selenium server Standalone 2.32.0 和 chromedriver 26.0.1383.0 for windows,我的测试永远不会结束,控制台中显示的最后一条消息是“PAGE LOADED!”。
有谁知道我应该如何编写这个测试,或者有一些适当的(现实生活中的)功能测试示例的链接?
谢谢你的帮助,
塞巴斯蒂安
javascript - 实习生 WebDriver 和 PhantomJS
我在浏览器(client.html)中测试时编写了我的主要单元测试,现在我准备通过 Node 设置测试自动化,但是我还没有设置 Selenium 服务器,管理层可能永远不会提供可以使用像 Sauce Labs 这样的第三方服务,所以我正在尝试使用它的 webdriver 模式通过 PhantomJS 运行实习生测试。
我正在使用以下选项运行 PhantomJS:
我的实习生配置如下所示:
它似乎在大多数情况下都有效,但是我在测试中遇到了 AJAX 请求问题。由于测试是通过 Intern 自己的服务器运行的,我添加了一个 AJAX 过滤器以确保将请求发送到正确的位置:
但是,我仍然发现我的 AJAX 请求失败了。经过进一步检查,我发现请求没有被发送(AJAX 失败,areadyState
为 0)。PhantomJS 似乎没有提供比这更多的信息。的--web-security=false
标志phantomjs
应该确保跨域请求是可能的,所以我不确定原因。
在 PhantomJS 中没有抛出特定的错误,提供给失败处理程序的唯一信息是“错误”状态。
编辑:
我尝试在没有 jQuery 的情况下手动执行 XMLHttpRequest,并且成功。很明显,这是 jQuery 的目的。启用crossDomain
并不能修复它。
intern - 功能测试失败时如何关闭测试浏览器?
在与实习生一起运行功能测试时,我注意到测试浏览器(在我的例子中是谷歌浏览器)在测试成功时会自动关闭,但在测试失败时不会关闭。
即使测试失败,有没有办法让浏览器关闭?
javascript - 实习生 AJAX 单元测试
我遇到了 Intern 如何运行测试的问题,并尝试通过 jQuery 测试使用 AJAX 调用的单元。由于 Intern 将测试客户端提供给 WebDriver 服务器(在这种情况下phantomjs --webdriver=8910
),我最终会在localhost:9000
. 这显然会导致同源策略问题。
我可以解决这个问题并提出跨域请求,但是一旦需要身份验证 cookie,我就会被阻止,因为显然我们的后端没有为 设置 cookie localhost
,所以我无法访问这些 cookie。
我尝试将proxyUrl
选项更改为以几种不同的排列方式指向我们的服务器,但到目前为止没有任何效果:
观察 WebDriver 日志,我注意到 Intern 告诉服务器加载http://localhost:9000/__intern/client.html?config=...
. 我尝试将其设置proxyUrl
为https://my.server.com/js/
并符号链接__intern
到intern
,但要么测试未运行,要么未报告回runner.js
. 当我以这种方式运行时,PhantomJS 日志看起来像这样:
然后,测试运行程序挂起并且永远不会收到测试结果,因为proxyUrl
没有指向 Intern 运行的代理服务器。
编辑 5/28
值得一提的是,其中很多都可以通过后端修改来规避(尽管理想情况下,测试堆栈应该是可配置的以适应代码库,而不是强制代码库符合),但我们只是说在这种情况下不是一个选项。
理想情况下,我希望 Intern 可以配置为client.html
从指定的 URL 加载,然后让记者localhost:9000
通过一些跨域兼容的方式(如 JSONP)发布到代理。我找不到任何其他合理的替代方案,所以目前看起来 Intern 根本不完全支持通过 AJAX 与后端通信的单元测试。
javascript - 使用 AndroidDriver 运行 Intern 功能测试
我尝试使用 AndroidDriver(https://code.google.com/p/selenium/wiki/AndroidDriver)在 Android 上运行一些实习生功能测试,但我无法(测试运行程序挂起并且永远不会返回,显然是因为当 Intern wd.js 包装器在发出 get 命令之前发出命令 execute('return typeof _ internCoverage !== "undefined" && JSON.stringify( _internCoverage)')时发生错误“套接字挂起” 。
是否有人尝试在 Android 上运行测试,如果是,您使用了什么?
谢谢你的帮助,
塞巴斯蒂安
intern - 在最后一次“会话/结束”之后向 API 发出请求时出现问题
我目前正在开发一个将测试结果发送到 Sauce Labs的自定义报告器。当前版本的记者可以在这里找到。
它的问题是它在最后一次会话之后不发送数据。例如,如果我有 2 个浏览器要测试,它只会发送第一个测试浏览器的结果,在发送第二个浏览器之前停止。
该请求是在可用的“会话/结束”主题中提出的。据我所知,在发出最后一个请求之前,整个事情就停止了。
我制作了一个更孤立的自定义记者来展示使用setTimeout()
而不是请求的问题。在这里看到它。
谢谢!
intern - 版本 1.1.0 中的实习生和客户路径
我注意到在 1.1.0 版本中模块不再被视为兄弟姐妹intern
。例如,我曾经能够运行类似的东西,http://localhost/intern/client.html?config=myproject/tests/config
但它似乎试图尝试从中获取它,http://localhost/intern/myproject/tests/config.js
而不是之前的http://localhost/myproject/tests/config.js
.
这是故意的吗?另外,我尝试预先../myproject/tests/config
添加,但它仍然会相对于intern
.
unit-testing - 实习生 excludeInstrumentation 正则表达式无法排除模块
我是实习生的新手,并试图弄清楚如何为我们的项目配置它。我们的文件层次结构与 github 上实习生教程或自述文件中的示例并不完全相同。我认为我正确指定了包位置,因为它不会抱怨找不到测试模块。它甚至似乎运行了我设置的测试,但它随后尝试在我的包模块中定义的其余模块上运行测试。它首先尝试加载 .../dojo/_base/declare.js。所以我尝试指定 excludeInstrumentation 属性值。
我将其指定为:
但它并不排除它。我的目标模块在定义中有这个:
但我得到错误:
我应该注意,dojo、dijit 和 dgrid 包实际上位于:/home/bholm/Projects/src/sandbox/libs/dojo/...(注意在路径中添加了库)。
我忘记在配置文件 intern.js 中添加我的 loader 属性:
关于为什么不排除正则表达式的任何想法?