ember 渲染 hbs 吞咽抛出错误
ember render hbs swallowing thrown error
我有一个简单的组件集成测试:
test('it throws error my-custom-input is called', function(assert) {
assert.throws(() => {
this.render(hbs`{{my-custom-input}}`);
}, /my-custom-input component error/, 'Error must have been thrown');
});
component.js 的源代码如下:
export default Ember.Component.extend({
layout,
init() {
this._super(...arguments);
throw 'my-custom-input component error';
}
}
虽然我的 ember-cli 版本是 2.3.0,但测试通过了。但是,在我将 ember-cli 版本更新到 2.11.1 后,测试没有通过。错误是:
actual: >
false
expected: >
true
为什么ember render 开始吞掉抛出的异常?
嗯,我不太清楚为什么 Ember 社区决定打破测试解释;但如果有人需要,这里是修复程序。
您需要通过
安装ember-qunit-assert-helpers
ember install ember-qunit-assert-helpers
您需要更改您的代码,使 throws
成为 Ember.assert
的例外,并且在您的测试 class 中,您只需要使用 assert.expectAssertion
而不是 assert.throws
.
答案来自以下 address 的 github 问题。
我有一个简单的组件集成测试:
test('it throws error my-custom-input is called', function(assert) {
assert.throws(() => {
this.render(hbs`{{my-custom-input}}`);
}, /my-custom-input component error/, 'Error must have been thrown');
});
component.js 的源代码如下:
export default Ember.Component.extend({
layout,
init() {
this._super(...arguments);
throw 'my-custom-input component error';
}
}
虽然我的 ember-cli 版本是 2.3.0,但测试通过了。但是,在我将 ember-cli 版本更新到 2.11.1 后,测试没有通过。错误是:
actual: >
false
expected: >
true
为什么ember render 开始吞掉抛出的异常?
嗯,我不太清楚为什么 Ember 社区决定打破测试解释;但如果有人需要,这里是修复程序。
您需要通过
安装ember-qunit-assert-helpersember install ember-qunit-assert-helpers
您需要更改您的代码,使 throws
成为 Ember.assert
的例外,并且在您的测试 class 中,您只需要使用 assert.expectAssertion
而不是 assert.throws
.
答案来自以下 address 的 github 问题。