2014-05-14 32 views
5

我有一個控制器的ember-qunit測試用例(使用moduleFor('controller:name', ...)),我希望能夠使用moduleForModel專用this.store()爲了檢索一個DS.FixtureAdapter數據存儲。對於這個特定的測試用例,我沒有試圖測試模型 - 我只是想驗證控制器可以填充一組模型實例,並且可以針對這些數據運行各種操作。使用ember-qunit測試存儲器控制器(DS.FixtureAdapter)

我使用CoffeeScript的,所以我的代碼如下所示:

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

在上面的例子中有一個名爲控制器的TestController並且還有一個名爲Test模式。我從中提取了moduleForModelcontainer.registercontext.__setup_properties__.store行。

的問題是,我跑了灰燼,qunit測試套件的時候得到一個錯誤:

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

的餘燼,qunit正常工作之外運行的實際應用。也許有人在那裏有這個相同的問題?或者,也許我採取了錯誤的做法?

回答

4

您的問題可能是您的測試模型尚未在容器中註冊,因此無法解析。

你可以在你的測試模塊回調手動註冊:

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

或者使用moduleFor IMPL的需求特性:

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

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

感謝,有什麼遺漏是'needs'領域。有用! – jeninto