ember-cli - 如何修复 Ember testem 中出现 'could not load' 、 'failed' 、 'could not find module' 或 'died' 等错误的测试?

标签 ember-cli testem karma-coverage

我成功地将几个基于 EAK/grunt 的 Ember 应用程序通过 HTMLBars 升级到 1.11,然后将它们迁移到 Ember CLI/Brocolli。单元测试是为 karma 测试运行程序设置的,因此我现在正在研究如何在 CLI 项目中运行这些测试,但我没有编写测试,并且确实没有单元测试 javascript 模块的经验。

在 iNet 上搜索,我可以看到其他人也使用了 karma,因为它的覆盖输出,并试图让它与 Ember CLI 一起工作,但是 Ember Core 不支持它,尽管他们说任何人都应该支持它能够使用自定义插件进行设置。我还尝试使用“testem”运行程序来看看效果如何。

Ember 网站确实有 v1.10 的“使用运行者进行自动化测试”页面,其中包含“testem”和“karma”部分,但 v1.11 中没有出现,所以我无法从中看出网站什么是相关的,什么是不相关的。但看来我应该能够为 karma 测试运行程序找到一个解决方案,因此我将旧的 devDependency 添加到了项目 package.json 中:

"karma": "^0.12.31",
"karma-chai": "~0.1.0",
"karma-chrome-launcher": "~0.1.2",
"karma-coverage": "~0.2.1",
"karma-firefox-launcher": "~0.1.3",
"karma-junit-reporter": "~0.2.1",
"karma-mocha": "~0.1.3",
"karma-phantomjs-launcher": "~0.1.2",
"karma-sinon-chai": "~0.1.5"

我还在项目中删除了旧的“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”时,我得到:

readline.js:529
this.line = this.line.slice(this.cursor);
                   ^
  TypeError: Cannot read property 'slice' of undefined

当我运行“testem”时,我得到:

TEST'EM 'SCRIPTS!
Open the URL below in a browser to connect.
http://localhost:7357/aN;0faN;NaNf

...然后项目的“../tests/index.html”在浏览器中加载,但无法“找到”任何 Assets 文件(css、js),因此无法正确执行或呈现任何内容。我只看到模板表达式({{content-for 'head'}} 等)。

当我运行“ember test”时,我得到:

Building...BuildingBuilding.Building..Building...Built project successfully.

1..0
# tests 0
# pass  0
# fail  0

# ok
No tests were run, please check whether any errors occurred in the page (ember test --server) and ensure that you have a test launcher (e.g. PhantomJS) enabled.

当我运行“ember test --server”时,我得到:

测试index.html在浏览器中加载并带有测试报告。当我取消选中“隐藏通过的测试”时,报告显示“29 个通过,28 个失败”。它有 11 个部分,其中特定测试可能会出现 3 个问题,例如“无法加载”、“失败”、“找不到模块”、“尝试注册未知工厂”或“死亡”。

有了这个,我显然正在运行 testem 而不是 karma,所以不妨努力让 testem 工作并稍后找出 karma。如果有更多示例和迁移故障排除文档,我可能会有系统的方法来解决其中一些问题。

最佳答案

我最近在节点升级后遇到了“没有运行测试,...”问题。我用以下方法修复了它:

npm install -g phantomjs

这还提供了一些附加选项:

https://github.com/ember-cli/ember-cli/issues/3969

关于ember-cli - 如何修复 Ember testem 中出现 'could not load' 、 'failed' 、 'could not find module' 或 'died' 等错误的测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29990535/

相关文章:

javascript - Ember CLI Hook /事件错误

ember.js - 路径或模式 "bower_components/moment/moment.js"不匹配任何文件

javascript - Sonarqube 不从 LCOV 检索我的 JavaScript 覆盖率

ember.js - 单个测试在 PhantomJS 中失败,但在 Chrome 和 Firefox 中有效

continuous-integration - 不行 PhantomJS 意外退出

angular - Karma 代码覆盖率未显示在 Sonarqube 中

javascript - 如何使用 isparta 从 karma 的代码覆盖范围中排除第三方导入(如 jquery)?

javascript - Ember.js 2.渲染页面后在后台延迟获取

ember.js - 在 ember-cli 中使用初始化程序注入(inject)函数

javascript - 如何使用 testem 测试服务器 REST API