2

一般来说,我正在尝试用茉莉花测试我的余烬模型。在Ember Data 1.0.0 中,我们不再拥有 App.Model.findor App.Model.createRecord。相反,我们有this.get('store').findthis.get('store').createRecord('model', {})

如何在我的测试中掌握商店?

注射店

我已经考虑注射它,但没有运气。

Encompass.inject(this, 'store', 'store');

我认为这是因为我注入的对象this不是正确的类型。

创建商店

我还尝试在本地创建商店:

describe("A Folder", function() {
  var store = null;
  var folder = null;
  beforeEach(function(){
    Encompass.Store = DS.Store.extend({
      adapter: Encompass.ApplicationAdapter
    });
    store = Encompass.Store.create();
  });

但使用商店

store.find('folder');

结果是TypeError: Cannot call method 'lookupFactory' of undefined

我认为这是因为容器不存在(及时?)

4

2 回答 2

4

您的商店正在尝试访问该容器,但它不存在。您将需要手动创建。对于每个测试的模型,您需要使用以下方法在商店中注册:

container.register('model:folder', Encompass.Folder);

您更新的测试如下:

describe("A Folder", function() {
  var store = null;
  var folder = null;
  beforeEach(function(){
    Encompass.Store = DS.Store.extend({
      adapter: Encompass.ApplicationAdapter
    });
    var container = new Ember.Container();
    container.register('model:folder', Encompass.Folder);
    store = Encompass.Store.create({
      container: container 
    });
  });
});
于 2013-10-24T23:46:47.873 回答
2

如果您想要应用程序的商店,您可以从容器中查找它。在您的测试中这样做很好,但不敢在生产中这样做:)

var store = App.__container__.lookup('store:main');

于 2013-10-25T01:22:01.670 回答