问题标签 [testem]
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.
ember-cli - 如何修复 Ember testem 中出现“无法加载”、“失败”、“找不到模块”或“死亡”等错误的测试?
我设法使用 HTMLBars 将几个基于 EAK/grunt 的 Ember 应用程序升级到 1.11,然后将它们迁移到 Ember CLI/Brocolli。单元测试是为 karma 测试运行器设置的,所以我现在正在研究如何让那些在 CLI 项目中运行,但我没有编写测试,也没有单元测试 javascript 模块的经验。
在 iNet 周围搜索,我可以看到其他人也使用了 karma,因为它的覆盖输出并试图让它与 Ember CLI 一起使用,但是 Ember Core 不支持它,尽管他们说任何人都应该能够得到它设置了一个自定义插件。我也在尝试使用“testem”跑步者来看看有什么坚持。
Ember 站点确实有一个针对 v1.10 的“使用跑步者进行自动化测试”页面,其中包含关于“testem”和“业力”的部分,但它没有出现在 v1.11 中,所以我无法从该站点判断什么是或不相关。但似乎我应该能够为 karma 测试运行器制定解决方案,所以我将旧的 devDependencies 添加到项目 package.json 中:
我还在项目中删除了旧的“karma.conf.js”(以及其他一些 karma conf),并更新了里面的路径(从“vendor”到“bower_components”)。我确实找到了一个“ember-cli-karma”节点模式并安装了它,但它似乎只有一个“package.json”。它没有文档,看起来只是一个没有实现的初始项目。我还安装了“karma”、“karma-cli”和“testem”节点模块。
testem 文档说要将您的 src 和测试文件添加到“testem.json”,但没有示例我不知道这意味着什么;每个 src 和测试文件的列表?用什么路径;相对的,绝对的?正斜杠,反斜杠?以 / 或 ./ 或 ../ 开头?我只是将它们排除在外,因为我认为系统只是按照惯例找到 src 和测试。
当我运行'karma init'时,我得到:
当我运行'testem'时,我得到:
...然后项目的“../tests/index.html”在浏览器中加载,但无法“找到”任何资产文件(css、js),因此无法正确执行或呈现。我只看到模板表达式({{content-for 'head'}} 等)。
当我运行“余烬测试”时,我得到:
当我运行“ember test --server”时,我得到:
带有测试报告的浏览器中加载了测试 index.html。当我取消选中“隐藏通过的测试”时,报告显示“29 通过,28 失败”。它有 11 个部分,其中特定测试可能有 3 个问题,例如“无法加载”、“失败”、“找不到模块”、“尝试注册未知工厂”或“死亡”。
有了这个,我显然在运行 testem 而不是 karma,所以不妨努力让 testem 工作并在以后弄清楚 karma。如果有更多示例和迁移故障排除文档,我可能会有系统的方法来解决其中一些问题。
ember.js - 如何设置 mocha 测试以运行 Ember 初始化程序以便定义注入的对象?
我的 Ember 应用程序通过初始化程序将“i18n”对象注入容器,稍后在控制器“preferredLanguage”计算属性中使用“this.container.lookup('i18n:main')”查找该对象。
测试控制器“preferredLanguage”属性的 mocha 单元测试由于“未定义 i18n”而失败。如何设置 mocha 测试以运行 Ember 应用程序初始化程序,以便在单元测试期间从容器中查找时定义注入的对象?
javascript - Trying to spy (Jasmine) on Array.prototype methods causes stack overflow
This is pretty odd. Using the testem
runner with jasmine2
and the following spec executes (though it correctly flags that there are no expectations):
However, add an expect
(any expect
!) and it causes the stack to overflow with the following message in the testem
console: RangeError: Maximum call stack size exceeded. at http://localhost:7357/testem/jasmine2.js, line 980
The html report page gets up to the spec and then hangs without showing any actual results.
Ultimately I'd like to do something like this:
Thanks in advance to anyone who can shed light on this oddity. Can I not spy on native prototypical methods?
angularjs - 如何测试加载事件的指令?
所以,我做了这个简单的指令
它工作正常,完全没有问题。当元素完成加载时,使用事件对象调用回调。我将它用于 iframe,但应该适用于支持加载事件的任何元素。
但后来我想测试它。我正在使用默认配置的 testem,我正在尝试这个简单的测试代码,但无法让它工作:
通常我没有任何问题测试指令,但这个事件回调让我发疯。无论我做什么,我都无法在测试用例上触发加载事件。如果我用 ng-click 替换 ct-onload 并触发 click 事件,那么一切都会按预期工作。这到底是怎么回事?是睾丸问题吗?
javascript - Testem / Jasmine:如何在 grunt-contrib-testem 中更改 jasmine 版本
是否可以在 grunt-contrib-testem 中更改 Jasmine 版本?我想使用最新的 2.3 版本的 Jasmine。这个最新版本有 beforeAll 和 afterAll 之类的方法。
当我尝试在 Grunt 配置中将 framework 设置为 jasmine2.3 时,它失败了。
我在下面给出了 Grunt 中 testem 的配置选项。
javascript - 来自 phantomJS 的 POST 调用不会命中从 grunt 运行的服务器
这是我的设置。
- 我有一个 grunt 任务,它做了 2 件事:1)启动一个在某个端口上监听的 http 服务器 2)触发另一个 grunt 任务
test-index.html
上面触发的 grunt 任务是一个 testem 任务,它在 PhantomJS的页面上运行测试。- 该
test-index.html
页面在我在第一个 grunt 任务中启动服务器的端口上发送一个 POST 调用。
问题:POST 调用未命中我的服务器。
注意:如果我手动运行同一台服务器(不是从 grunt 运行)然后运行测试 grunt 任务,则 POST 调用会命中服务器。
继承人的代码:
咕噜任务
test-index.html(在某处)
谁能指出这里可能出了什么问题?
node.js - 节点 tty ReadStream _handle 为空
我正在尝试为测试运行器testem编写一个电子启动器。Testem 将每个启动器的测试结果打印到终端(执行测试的分叉进程,传统上是浏览器,但在本例中为 Electron)。Testem 想要将 tty 设置为“原始模式”,以便它可以制作一个显示为实时更新的人造标签视图,并允许用户在标签之间导航以查看来自不同启动器的结果。在 testem 尝试调用(在 OS X Yosimite 上的节点 v4.0.0 上)后,我在终端中看到了这个错误:process.stdin.setRawMode
堆栈跟踪从节点 core 的 tty.js:49开始。这是引发错误的函数:
我似乎无法弄清楚到底this._handle
是什么。Testem 不希望它为空,但由于某种原因它是空的。谁能帮我解决这个问题?
ember.js - 如何在 Ember CLI 验收测试中使用 phantomjs API 方法?
Ember 的验收测试助手提供了一个很好的抽象层,用于编写基于用户操作的纯验收测试,但这并不总是足够的。
在使用 Capybara 进行 Ruby/Rails 测试中,底层测试驱动程序(selenium-webdriver、phantomjs 等)可以通过调用在测试用例中访问page.driver
,然后其 API 直接用于执行抽象 API 未提供的操作,例如处理 cookie 和窗口大小。
例如:
这可以在 Ember-CLI 项目中完成吗,默认所有内容(qunit,testem)?
这个问题的背景是我们有一个功能,它强制用户在点击 OK 之前滚动到底部(就像 clickwrap 许可协议有时会让你做的那样,但它是为了别的东西)。对此的验收测试在 Chrome 中运行良好,但在 phantomjs 中失败,我们认为这可能是因为窗口或视口大小。 http://phantomjs.org/api/webpage/property/viewport-size.html
可能有其他方法可以解决此问题,但我仍然对直接访问测试驱动程序感兴趣,因为我认为这是一个有用的工具。
maven - 在没有全局安装 PhantomJS 的情况下运行“ember 测试”
我有一个使用 Maven 构建的 Ember CLI 项目,我试图弄清楚如何让 maven 能够在没有预先假设全局安装 PhantomJS 的情况下运行测试。我正在使用 frontend-maven-plugin 即时安装特定版本的 node 和 npm,调用 npm install、bower install 和 ember build;这一切都已经奏效了。我现在要做的也是调用 ember 测试,如果测试失败,则使 maven 构建失败。目前,只要“phantomjs”在运行 maven 构建的机器的路径中,它就可以工作;但是,许多不是 ember 开发人员并且不会在他们的路径中使用 phantomjs 的开发人员使用此构建。我也不想确保在我的 CI 服务器上全局安装 phantomjs。
有没有办法在 package.json 中将 PhantomJS 指定为依赖项并让 testem(ember 的默认测试运行程序)在 node_modules 中安装?我可以以某种从文档中不明显的方式提供 PhantomJS 的路径来测试吗?或者如果我想运行测试,我是否只需要忍受隐藏的手动依赖?