在 Ember.js 中集成测试路由模板
Integration test a routes template in Ember.js
我有一个 ember-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 Guides on Acceptance Testing.
如果需要测试路由模板,使用acceptance tests。
如果您需要测试路由的方法和计算属性,请使用 unit tests。
我有一个 ember-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 Guides on Acceptance Testing.
如果需要测试路由模板,使用acceptance tests。
如果您需要测试路由的方法和计算属性,请使用 unit tests。