5

我有一个控制器(使用)的 ember-qunit 测试用例moduleFor('controller:name', ...),我希望能够使用moduleForModel-exclusivethis.store()来检索 DS.FixtureAdapter 数据存储。对于这个特定的测试用例,我不是要测试模型——我只是想验证控制器是否可以填充一组模型实例,并且可以针对该数据运行各种操作。

我正在使用咖啡脚本,所以我的代码如下所示:

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 的模型。我从ember-qunit的定义中取消了container.register和行。context.__setup_properties__.storemoduleForModel

问题是运行 ember-qunit 测试套件时出现错误:

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

在 ember-qunit 之外运行实际应用程序可以正常工作。也许那里有人遇到同样的问题?或者也许我采取了错误的方法?

4

1 回答 1

4

您的问题可能是您的测试模型尚未在容器中注册,因此无法解决。

您可以在测试模块回调期间手动注册:

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

或者使用 moduleFor impl 的 needs 属性:

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

  // specify the other units that are required for this test
  needs: ['model:test'],
  setup: {...},
  teardown: {...}
});
于 2014-05-14T10:39:18.907 回答