2014-05-14 9 views
5

Mam przypadek testowy ember-qun dla kontrolera (używając moduleFor('controller:name', ...)), że chciałbym móc użyć moduleForModel -wyłącznego this.store() w aby pobrać magazyn danych DS.FixtureAdapter. W tym konkretnym przypadku testowym nie próbuję testować modelu - chcę tylko sprawdzić, czy kontroler może zostać wypełniony zestawem instancji modelu, a różne operacje można wykonać na tych danych.Używanie ember-qunit do testowania kontrolerów ze sklepem (DS.FixtureAdapter)

Używam coffeescript więc mój kod wygląda następująco:

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

W powyższym przykładzie jest kontroler o nazwie TestController i tam jest również model o nazwie test. Podniosłem linie container.register i context.__setup_properties__.store z definicji moduleForModel w ember-qunit.

Problemem jest to, że pojawia się błąd podczas uruchamiania zestawu testowego Ember-qunit:

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

Running rzeczywistego stosowania poza Ember-qunit działa dobrze. Może jest ktoś, kto ma ten sam problem? A może podejmuję niewłaściwe podejście?

Odpowiedz

4

Twoim problemem może być to, że Twój model testowy nie został zarejestrowany w kontenerze, więc nie można go rozwiązać.

Można zarejestrować ręcznie podczas swoich testów modułu wywołania zwrotne:

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

Albo użyć właściwości potrzeb IMPL moduleFor:

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

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

Dzięki, czego brakuje to pole 'needs'. To działa! – jeninto

Powiązane problemy