【发布时间】:2018-09-18 14:06:35
【问题描述】:
使用 Ember.js 运行测试时出现以下错误:
Promise 在“...”之前被拒绝:断言失败:fullName 必须是 正确的全名
这个错误是什么意思?
【问题讨论】:
标签: ember.js ember-qunit
使用 Ember.js 运行测试时出现以下错误:
Promise 在“...”之前被拒绝:断言失败:fullName 必须是 正确的全名
这个错误是什么意思?
【问题讨论】:
标签: ember.js ember-qunit
如果您使用新的嵌套子文件夹尖括号语法,您也可能会遇到此错误:<Foo::Bar />
确保您拥有最新版本的ember-angle-bracket-invocation-polyfill,至少为 1.3.0
【讨论】:
原因
如果moduleForComponent 用于单元测试并且第一个参数(组件的名称)以component: 前缀开头,则会引发此错误。
如何解决
您应该检查作为单元测试参数编写的组件的名称。如果使用moduleForComponent,则不应使用component: 前缀。但是,如果使用moduleFor,则应使用component: 前缀,如下例所示:
moduleForComponent('my-component', 'unit: my-component', {
//test specifications
});
或
moduleFor('component:my-component', 'unit: my-component', {
//test specifications
});
This twiddle 演示了这两个示例的用法。
【讨论】:
您还会看到这条带有错误路由名称的可怕消息,如下所示:
Router.map(function () {
this.route('mock-test/:accountId/:companyId');
return null;
});
您将路线名称与路径段混淆了。像这样修复它:
Router.map(function () {
this.route('mock-test', {
path: 'mock-test/:accountId/:companyId',
});
return null;
});
【讨论】:
在使用一个冒号而不是 2 来分隔组件名称和子组件后,我遇到了同样令人困惑的错误。
<Component:SubComponent /> 而不是<Component::SubComponent />
【讨论】: