2014-05-14 9 views
5

Ho un caso di prova ember-qunit per un controller (utilizzando moduleFor('controller:name', ...)) che mi piacerebbe poter utilizzare lo moduleForModel -exclusive this.store() in ordine per recuperare un archivio dati DS.FixtureAdapter. Per questo specifico caso di test, non sto provando a testare il modello: voglio solo verificare che il controller possa essere popolato con un insieme di istanze di modello e che varie operazioni possano essere eseguite su tali dati.Utilizzo di ember-qunit per testare i controller con un negozio (DS.FixtureAdapter)

sto usando CoffeeScript quindi il mio codice è simile:

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

Nell'esempio di cui sopra v'è un controller di nome TestController e v'è anche un modello denominato Test. Ho rimosso le linee container.register e context.__setup_properties__.store dalla definizione di moduleForModel in ember-qunit.

Il problema è che ho un errore quando si esegue la suite di test brace-qunit:

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

esecuzione l'effettiva applicazione al di fuori della brace-qunit funziona bene. Forse c'è qualcuno là fuori che ha avuto lo stesso problema? O forse sto prendendo l'approccio sbagliato?

risposta

4

Il problema potrebbe essere che il modello di test non è stato registrato nel contenitore, quindi non può essere risolto.

Si potrebbe registrare manualmente durante le callback modulo di test:

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

Oppure utilizzare la proprietà bisogni dei impl moduleFor:

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

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

Grazie, quello che manca è il campo 'needs'. Funziona! – jeninto

Problemi correlati