Ember.js 灰烬验收测试在PhantomJS中失败,但在Chrome中通过

Ember.js 灰烬验收测试在PhantomJS中失败,但在Chrome中通过,ember.js,ember-data,acceptance-testing,Ember.js,Ember Data,Acceptance Testing,我正在尝试为我的Ember应用程序编写一个验收测试,当涉及到PhantomJS和Ember测试服务器时,我似乎遇到了一些问题 我正在运行以下版本: Ember : v1.13.6 Ember Data : v1.13.7 PhantomJS失败,出现以下错误: Died on test #1 at http://localhost:7357/assets/test-support.js:2934 at http://localhost:7357/ass

我正在尝试为我的Ember应用程序编写一个验收测试,当涉及到PhantomJS和Ember测试服务器时,我似乎遇到了一些问题

我正在运行以下版本:

Ember      : v1.13.6
Ember Data : v1.13.7
PhantomJS失败,出现以下错误:

Died on test #1     at http://localhost:7357/assets/test-support.js:2934
            at http://localhost:7357/assets/test-support.js:6640
            at http://localhost:7357/assets/test-loader.js:31
            at http://localhost:7357/assets/test-loader.js:21
            at http://localhost:7357/assets/test-loader.js:40
            at http://localhost:7357/assets/test-support.js:6647: Can't find variable: DS
这是一个已知的问题吗

测试在chrome runner中运行良好

这是我的ember-cli-build.js(文件):

这是我的测试:

import Ember from 'ember';
import { module, test } from 'qunit';
import startApp from 'teal-turtle/tests/helpers/start-app';

var application;

module('Acceptance | platforms', {
  beforeEach: function() {
    application = startApp();
  },

  afterEach: function() {
    Ember.run(application, 'destroy');
  }
});

test('visiting /platforms', function(assert) {
  authenticateSession();
  visit('/platforms');

  andThen(function() {
    assert.equal(currentURL(), '/platforms');
  });
});

谢谢

我注意到您在路由文件(平台)中使用了.bind,而.bind对phantomJS不太友好:(因此我做了以下操作

在package.json中添加了es5垫片和花椰菜漏斗

"broccoli-funnel": "^0.2.3",
"es5-shim": "^4.0.5"
接下来,我打开了ember-cli-build.js(以前称为brockfile)

最后,我在vendor.js上面的tests/index.html中添加了es5垫片

<script src="assets/es5-shim.js"></script>

下面是github上的完整提交,显示了所有更改的文件(注意:在这个提交示例中是Brocfile,因为我使用的是较旧的ember cli版本)


你最近有一个可用的版本吗?或者你是开箱即用的吗?还有-到目前为止,你在应用程序中有多少代码(你的问题中没有太多细节来帮助调试它为什么会坏)@ToranBillups这个应用程序我还没有看到一个可用的版本,在游戏开始测试时有点晚(不幸的是)。应用程序中有很多内容。是否有特定的区域对您有帮助?stacktrace()中的行上显示了什么内容它是一个余烬数据模型吗?你的Brocfile.js中有什么?有什么特殊的余烬数据攻击吗?你的bower.json文件和package.json文件中有余烬数据吗?@ToranBillups我已经将这个Brocfile添加到我的问题中。test-support.js的第6647行是对
TestLoader.load()的调用
。我们没有任何特殊的余烬数据黑客攻击,它在bower.json和package.json文件中。该应用程序在Chrome测试运行程序中以及使用它时都能按预期工作。啊,很好!我真的很感谢你在这里的工作:)我有一种感觉,因为Chrome的构建工作得很好,它与PhantomJS有点冲突。我收到的错误信息真的让我大吃一惊。你不是一个人——这个错误一点帮助都没有,但当我看到我们的老朋友“bind”时,我知道我们可以开始一个地方。这太棒了。我们有一个类似的问题,在PhantomJS2.0上不是问题,但在运行PhantomJS1.9.7的构建服务器上是问题。将es5垫片放置到位,将其固定!传奇人物@托兰·比卢普斯,正是我拼命寻找的答案。
var funnel = require('broccoli-funnel');
var es5Shim = funnel('node_modules/es5-shim', {
    files: ['es5-shim.js'],
    destDir: '/assets'
});

return app.toTree([es5Shim]);
<script src="assets/es5-shim.js"></script>