ember Error: Assertion Failed: fullName must be a proper full name

ember Error: Assertion Failed: fullName must be a proper full name

我在 运行 使用 Ember.js 进行测试时遇到以下错误:

Promise rejected before "...": Assertion Failed: fullName must be a proper full name

这个错误是什么意思?

原因

如果 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;
});

如果您使用新的嵌套子文件夹尖括号语法,您也可能会遇到此错误:<Foo::Bar />

确保您拥有最新版本的 ember-angle-bracket-invocation-polyfill,至少是 1.3.0

在使用一个冒号而不是 2 个冒号来分隔组件名称和子组件后,我遇到了同样令人困惑的错误。

<Component:SubComponent /> 而不是 <Component::SubComponent />