2014-05-14 10 views
5

Ich habe einen ember-qunit Testfall für einen Controller (mit moduleFor('controller:name', ...)), dass ich in der Lage wäre, die moduleForModel -exclusive this.store() zu verwenden Um einen DS.FixtureAdapter-Datenspeicher abzurufen. Für diesen speziellen Testfall versuche ich nicht, das Modell zu testen - ich möchte nur überprüfen, dass der Controller mit einer Reihe von Modellinstanzen gefüllt werden kann und verschiedene Operationen mit diesen Daten ausgeführt werden können.Mit ember-qunit zum Testen von Controllern mit einem Speicher (DS.FixtureAdapter)

ich Coffee bin mit so mein Code wie folgt aussieht:

moduleFor("controller:test", 'My Controller', { 
    setup: -> 
    @store().createRecord 'test', value: 1 
    @store().createRecord 'test', value: 2 

    @subject({ 
     model: @store().all('test') 
    }) 
    teardown: -> App.reset() 
}, (container, context) -> 
    container.register 'store:main', DS.Store 
    container.register 'adapter:application', DS.FixtureAdapter 
    context.__setup_properties__.store = -> container.lookup('store:main') 
) 

In dem obigen Beispiel ein Controller Testcontroller und es gibt auch ein Modell mit dem Namen als Test bezeichnet wird. Ich hob die container.register und context.__setup_properties__.store Zeilen aus der Definition von moduleForModel in Ember-qunit.

Das Problem ist, dass ich einen Fehler, wenn die Glut-QUnit Testsuite:

Setup failed on [test case name]: No model was found for 'test' 

Ausführen der tatsächlichen Anwendung außerhalb von Ember-QUnit funktioniert gut. Vielleicht gibt es jemanden da draußen, der das gleiche Problem hatte? Oder bin ich vielleicht falsch?

Antwort

4

Ihr Problem könnte sein, dass Ihr Testmodell nicht im Container registriert wurde und daher nicht aufgelöst werden kann.

Sie können manuell während des Testmoduls Rückrufe registrieren:

container.register('model:test', TestModel) 

Oder die Bedürfnisse Eigentum der moduleFor impl verwenden:

moduleForComponent('controller:test', 'My Controller', { 

    // specify the other units that are required for this test 
    needs: ['model:test'], 
    setup: {...}, 
    teardown: {...} 
}); 
+0

Danke, was fehlte, war das 'needs' Feld. Es klappt! – jeninto