我设法使用 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": "^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”在浏览器中加载,但无法“找到”任何资产文件(css、js),因此无法正确执行或呈现。我只看到模板表达式({{content-for 'head'}} 等)。
当我运行“余烬测试”时,我得到:
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。如果有更多示例和迁移故障排除文档,我可能会有系统的方法来解决其中一些问题。