2

我有一个包含 routemyroute和 template的 ember-cli 2.4.2 应用程序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}}`);

    // ...
});
4

2 回答 2

3

如果您需要测试路由模板,请使用验收测试

如果您需要测试路由的方法和计算属性,请使用单元测试

于 2016-08-04T20:19:23.057 回答
2

我认为最接近解决问题的方法是使用验收测试,您可以在其中使用 jQuery 并导航到应用程序中的某些路由。您还可以在那里获得异步助手,例如andThen, visit。请参阅Ember 验收测试指南

于 2016-08-04T18:55:54.453 回答