使用Ember.js运行测试时出现以下错误:
承诺在“......”之前被拒绝:断言失败:fullName必须是a 正确的全名
此错误的含义是什么?
答案 0 :(得分:3)
<强>原因强>
如果component:
用于单元测试,并且第一个参数(组件名称)以moduleForComponent
前缀开头,则抛出此错误。
如何解决
您应该检查作为单元测试参数编写的组件的名称。如果使用component:
,则不应使用moduleFor
前缀。但是,如果使用component:
,则应使用moduleForComponent('my-component', 'unit: my-component', {
//test specifications
});
前缀,如下例所示:
moduleFor('component:my-component', 'unit: my-component', {
//test specifications
});
或
String str = "12a123";
char firstCharacter = (char) str.chars()
.filter(c -> String.valueOf((char) c).matches("[a-zA-Z]"))
.findFirst()
.orElseThrow(() -> new Exception("No character exist"));//a
This twiddle演示了两个例子的用法。
答案 1 :(得分:1)
您还将看到此错误消息,其中包含错误的路由名称,例如:
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 :(得分:1)
如果您使用新的嵌套子文件夹尖括号语法:<Foo::Bar />
确保您拥有ember-angle-bracket-invocation-polyfill的最新版本,至少为1.3.0
答案 3 :(得分:1)
使用一个冒号而不是2来分隔组件名称和子组件后,我也遇到了同样令人困惑的错误。
<Component:SubComponent />
而不是<Component::SubComponent />