浏览器测试运行器和 CLI 之间的自动化测试差异?
Automated testing differences between browser test runner and CLI?
我有一个 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)')
这不是 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);
};
};
有关详细信息,请参阅线程。
我有一个 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)')
这不是 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);
};
};
有关详细信息,请参阅线程。