2016-08-04 35 views
0

Ich habe eine ember-cli 2.4.2 Anwendung, die eine Route myroute und eine Vorlage myroute.hbs enthält.Integrationstest eine Routenvorlage in Ember.js

Wenn ich Integration Testkomponenten, das tue ich so etwas wie dies,

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'); 
}); 

Wenn ich moduleFor('route:myroute') verwenden, this.render() der Anruf wirft this.render is not a function. Wie unten, wenn ich rufe route.render() es wirft Error: Assertion Failed: Could not find "hbs{{myroute}}" template, view, or component.

Das Ziel ist es, Integrationstest eine Route Vorlage. Ich möchte jQuery verwenden, um sicherzustellen, dass die Vorlage korrekt gerendert wird. Ich habe einige berechnete Eigenschaften auf der Route, die beeinflussen, was angezeigt wird.

Ich kann nicht scheinen, irgendeine gute Dokumentation auf Integration zu finden, die eine Wegschablone prüft. Irgendwelche Ideen oder Hinweise? Danke vielmals.

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}}`); 

    // ... 
}); 
+1

Es gibt einen Tippfehler - die 'hbs' sollten außerhalb der Backticks sein. Funktioniert es? –

Antwort

2

Ich denke, die nächst Sie bekommen können, das Problem zu lösen, ist Akzeptanztests zu verwenden, wo Sie jQuery und auch navigieren Sie zu bestimmten Strecken in Ihrer Anwendung verwenden können. Sie erhalten auch asynchrone Helfer wie andThen, visit. Bitte beachten Sie Ember Guides on Acceptance Testing.

+0

Danke für den Tipp, das funktioniert gut. Ich bin auf einige Probleme gestoßen, weil die Route eine API abfragt, also habe ich etwas Zeit damit verbracht, die API mit 'ember-cli-mirage' zu ​​fälschen. http://www.ember-cli-mirage.com/docs/v0.2.x/quickstart/ – wsams

+0

Sicher, testen, wenn AJAX-Anfragen und Async-Code beteiligt ist erfordert einige Zeit, um es funktioniert aus meiner Erfahrung zu bekommen :) Vor allem, wenn App ist komplex und jede Route hat viele Abhängigkeiten. –

1

Wenn Sie die Vorlage einer Route testen müssen, verwenden Sie acceptance tests. Wenn Sie Methoden und berechnete Eigenschaften einer Route testen müssen, verwenden Sie unit tests.