我在使用 Ember 运行测试时收到以下错误.js:
承诺在"..."之前被拒绝:断言失败:全名必须是 专有全名
此错误的含义是什么?
如果您使用的是新的嵌套子文件夹尖括号语法,也可能会遇到此错误:<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
});
这个 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 />