我有一个Ember CLI插件项目 - ui-slider-input - 它有一个围绕JS滑块小部件的非常基本的包装器。这是作为一个组件实现的,开箱即用的单元测试组件是否执行渲染。这是奇怪的部分......
UiSliderComponent: it renders
)npm test
从CLI运行相同的测试时(也可能使用ember test
...没有区别),它会因以下堆栈跟踪而失败:
not ok 7 PhantomJS 1.9 - UiSliderInputComponent: it renders
---
actual: >
null
message: >
Died on test #2 at http://localhost:7357/assets/test-support.js:418
at test (http://localhost:7357/assets/test-support.js:284)
at http://localhost:7357/assets/dummy.js:273
at http://localhost:7357/assets/vendor.js:77
at http://localhost:7357/assets/test-loader.js:14: 'undefined' is not a function (evaluating 'this._applyPrecision.bind(this)')
答案 0 :(得分:3)
这不是Ember CLI问题,而是PhantomJS问题。
PhantomJS缺少Function.prototype.bind
,您可以在堆栈跟踪中调用它。 This GitHub issue讨论了这个问题。最简单的解决方案是添加一个:
Function.prototype.bind = Function.prototype.bind || function (thisp) {
var fn = this;
return function () {
return fn.apply(thisp, arguments);
};
};
有关详细信息,请参阅主题。