Ember CLI测试间歇性失败

时间:2016-02-03 17:41:48

标签: ember.js ember-cli

我在运行Ember测试时遇到问题。在每3-5次尝试之后,它会在运行任何测试之前遇到错误。当我在服务器模式下运行时,我可以看到这个输出:

ReferenceError: Can't find variable: EmberENV at http://localhost:7357/3256/tests/index.html?hidepassed, line 42

ReferenceError: Can't find variable: define at http://localhost:7357/assets/test-loader-53146f185443881bff29aab3e80079e2.js, line 3

ReferenceError: Can't find variable: define at http://localhost:7357/assets/tests-a72d35574ec0d1ab014d4af21210a23a.js, line 1

当我查看引用的令人反感的文件时,它们看起来像这样:

/* globals requirejs, require */
(function() {
define("ember-cli/test-loader",
  [],
  function() {
    "use strict";

    var moduleIncludeMatchers = [];
    var moduleExcludeMatchers = [];

    function addModuleIncludeMatcher(fn) {
      moduleIncludeMatchers.push(fn);
    }; 

等...

据我所知,define()是requirejs引入的函数,因此看起来它只是在测试开始之前没有加载。知道为什么会这样,如果有任何方法可以确保按正确顺序加载东西吗?

其他重要的事情;这似乎不是个别测试的问题,因为删除它们,尤其是第一个被击中的情况并没有什么不同。看起来它经常在大量检查后开始发生,除此之外,我们从130到174测试,但似乎没有特别奇怪的介绍。我也尝试过删除新代码的部分,但是如果我恢复到之前的版本,它似乎每次都能正常工作。这可能只是代码库变大的问题。

对于依赖项的版本:

EmberCLI: 1.13.13
node: 5.4.1
PhantomJS: 2.1.1

还有什么其他有用的东西?感谢。

2 个答案:

答案 0 :(得分:1)

忘了在这里报告它已经修复了我的情况。 首先,此处报告了此问题:https://github.com/ariya/phantomjs/issues/14173,它可能是由css中使用的某些内联导入@import url(...)引起的。

我的案例中的修复是编写一个忽略网络请求的替代测试运行器,类似于上述问题中建议的@wagenet

希望这适用于其他用例。

答案 1 :(得分:0)

我们遇到了同样的问题,并且能够通过在bower.json中将qunit更新为1.20来修复它。

"qunit": "~1.20.0",