我有一个失败的组件测试,因为它无法找到模板正在渲染的部分。特定错误是"断言失败:无法找到名称为&component; activity-list-item-content'的部分'。"
我的测试文件基本上是ember-cli生成的默认值:
import {
moduleForComponent,
test
} from 'ember-qunit';
moduleForComponent('activity-list-item', 'ActivityListComponent', {
// specify the other units that are required for this test
needs: ['helper:format-date']
});
test('it renders', function() {
expect(2);
// creates the component instance
var component = this.subject();
equal(component._state, 'preRender');
// appends the component to the page
this.append();
equal(component._state, 'inDOM');
});
以及看起来像这样的组件模板:
{{#if activity.momentId}}
{{#link-to 'moment' momentId class='close-dropdown'}}
{{partial 'components/activity-list-item-content'}}
{{/link-to}}
{{else}}
{{partial 'components/activity-list-item-content'}}
{{/if}}
我的应用程序运行正常,没有任何错误,所以我想知道我的测试设置中是否缺少某些内容。我也尝试将其添加到needs
数组并获得相同的错误:
needs: ['helper:format-date', 'template:components/-activity-list-item-content']
如何让我的测试找到部分?
更新
@GJK指出部分名称应以下划线而不是破折号开头。如果我进行了更改,测试通过了,但是我在控制台中收到了一个说明:
的depcrecation警告DEPRECATION:模块不应包含下划线。尝试查找" myapp-ember / templates / components / -activity-list-item-content"没找到。请重命名" myapp-ember / templates / components / _activity-list-item-content" to" myapp-ember / templates / components / -activity-list-item-content"代替。
答案 0 :(得分:0)
发现此问题:https://github.com/rwjblue/ember-qunit/issues/110
目前的解决方法是:
import resolver from '../../helpers/resolver';
moduleForComponent('some-other-thing', 'component:some-other-thing', {
needs: ['component:some-thing'],
setup: function() {
this.container.register('template:path/to/partial',
resolver.resolve('template:path/to/-partial'));
}
});