mat*_*nus 7 ember.js ember-data ember-cli
我正在构建一个相对直接的comment-list组件.我想传递可评论的模型(比如说a Post)并让组件负责创建,编辑和删除注释.现在我传递了各种各样的动作,而且非常脆弱.
如何在组件集成测试中创建Ember Data模型的真实实例?
我的直接想法是导入模型然后.create({})它,但错误use this.store.createRecord() instead
/* jshint expr:true */
import { assert } from 'chai';
import { describeComponent, it } from 'ember-mocha';
import hbs from 'htmlbars-inline-precompile';
import Post from 'ownersup-client/post/model';
describeComponent( 'comment-list', 'Integration: CommentListComponent', {
integration: true
},
function() {
it('renders all of the comments', function() {
const model = Post.create({ title: 'title' });
model.get('comments').createRecord({ body: 'One Comment' })
this.render(hbs`{{comment-list model=model}}`);
assert.lengthOf(this.$('.comment-list-item'), 1);
});
}
);
Run Code Online (Sandbox Code Playgroud)
有人有什么想法?
在所有Ember测试助手中,商店仅提供moduleForModel.
以下是此测试助手的工作原理(来源):
var container = this.container;
var store = container.lookup('service:store') || container.lookup('store:main');
Run Code Online (Sandbox Code Playgroud)
你可以在测试中做同样的事情.您也可以将它放入帮助程序中,这样就不必复制粘贴了很多东西.
请注意,它仅适用于集成测试.您可以使用startApp与Ember CLI样板捆绑在一起的测试助手启动应用程序,将任何测试转换为集成测试.
小智 5
新的ember mocha版本0.8.4包含一种新的公共方式来注入商店等服务.很快就会有一个指南部分(见https://github.com/emberjs/guides/blob/master/source/testing/testing-components.md)
实质上,在您的beforeEach中,您需要添加以下行:this.inject.service('store');,使商店可以this.get('store')在测试中访问.
以下是新更改的pull请求的链接:https://github.com/switchfly/ember-test-helpers/pull/105
对于那些在集成测试中注入相关类似问题的人们的一般答案。
一切都取决于您的项目中使用的版本和解决方案。
module
当您使用( import { module } from 'ember-qunit';)进行集成测试时
你可以this.owner.lookup('service:store')在你的测试中使用
有关更多信息,请参阅 Dockyard 的一篇精彩文章 https://dockyard.com/blog/2018/01/11/modern-ember-testing
| 归档时间: |
|
| 查看次数: |
1906 次 |
| 最近记录: |