Ember.js 灰烬验收测试在PhantomJS中失败,但在Chrome中通过
我正在尝试为我的Ember应用程序编写一个验收测试,当涉及到PhantomJS和Ember测试服务器时,我似乎遇到了一些问题 我正在运行以下版本: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 : 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>