集成测试Ember.js中的路由模板
Integration test a routes template in Ember.js
我有一个成员cli 2.4.2应用程序,它包含一个路由myroute
和一个模板myroute.hbs
。
当我集成测试组件时,我会做这样的事情,
import { moduleForComponent, test } from 'ember-qunit';
import hbs from 'htmlbars-inline-precompile';
moduleForComponent('mycomponent', 'Integration | Component | mycomponent', {
integration: true
});
test('the component', function(assert) {
this.render(hbs`
{{#mycomponent}}
text
{{/mycomponent}}
`);
assert.notEqual(this.$('.container').text().trim(), 'text');
});
当我使用moduleFor('route:myroute')
时,调用this.render()
抛出this.render is not a function
。如下所示,如果我调用route.render()
,它会抛出Error: Assertion Failed: Could not find "hbs{{myroute}}" template, view, or component.
目标是集成测试路线的模板。我想使用jQuery来确保模板正确呈现。我在路线上有一些影响显示内容的计算属性。
我似乎找不到任何关于集成测试路由模板的好文档。有什么想法或建议吗?非常感谢。
import Ember from 'ember';
import { moduleFor, test } from 'ember-qunit';
import hbs from 'htmlbars-inline-precompile';
moduleFor('route:myroute', 'Integration | Route | myroute', {
integration: true,
});
test('the route', function(assert) {
const mockModel = {
response: { field1: true, field2: false }
};
const route = this.subject({ model: mockModel });
route.render(`hbs{{myroute}}`);
// ...
});
如果您需要测试路由的模板,请使用验收测试。
如果需要测试路由的方法和计算属性,请使用单元测试。
我认为最接近解决问题的方法是使用验收测试,在那里您可以使用jQuery,还可以导航到应用程序中的某些路线。您还可以获得类似andThen
、visit
的异步助手。请参阅Ember验收测试指南。
相关文章:
- ember.js:转换到相同的路由会产生堆栈溢出问题
- Ember我如何知道路由模板何时完成加载并触发回调
- Ember访问公共路由/控制器mxiin中的控制器属性
- 使用ember模式对话框的ember中的可路由模式
- 在 Ember 1.0.0 pre 中路由时
- 如何在 ember.js 中的模式对话框中打开路由
- 如何在Ember中转换到另一个路由时调用一个方法
- Ember教程-向router.js添加新的路由
- 使用TranstionToRoute中的url将属性传递到Ember中的新路由
- Ember添加了对转换调用上下文(路由/控制器)的检查
- Ember.js使用Router架构获取父路由的控制器
- 如何在ember.js中将多个模型处理成一个模板/路由
- 处理Ember.js默认路由之外的页面URL哈希参数
- Ember.js处理View事件后转换到路由
- Ember.js:路由返回多个模型,包括一个promise,给出错误
- 如何从服务器获取嵌套路由 ember 2.3.0 的数据
- 如何定义嵌套路由+ember不呈现嵌套路由模板
- 如何添加事件处理程序来路由Ember.js中显示的事件
- “未找到路由”;Ember.js
- 如何在路由Ember.js中创建默认菜单