Reputation: 53
I have an ember-qunit test case for a controller (using moduleFor('controller:name', ...)
) that that I'd like to be able to use the moduleForModel
-exclusive this.store()
in order to retrieve a DS.FixtureAdapter data store. For this specific test case, I'm not trying to test the model - I just want to verify that the controller can be populated with a set of model instances and various operations can be run against that data.
I'm using coffeescript so my code looks like:
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 the example above there is a controller named TestController and there is also a model named Test. I lifted the container.register
and context.__setup_properties__.store
lines from the definition of moduleForModel
in ember-qunit.
The problem is that I get an error when running the ember-qunit test suite:
Setup failed on [test case name]: No model was found for 'test'
Running the actual application outside of ember-qunit works fine. Maybe there's somebody out there who's had this same issue? Or maybe I'm taking the wrong approach?
Upvotes: 5
Views: 1137
Reputation: 2861
Your problem could be that your test model has not been registered in the container, so it cannot be resolved.
You could register manually during your test module callbacks:
container.register('model:test', TestModel)
Or use the needs property of the moduleFor impl:
moduleForComponent('controller:test', 'My Controller', {
// specify the other units that are required for this test
needs: ['model:test'],
setup: {...},
teardown: {...}
});
Upvotes: 4