Ember.js 使用JasmineJS测试余烬数据1.0.0

Ember.js 使用JasmineJS测试余烬数据1.0.0,ember.js,ember-data,jasmine,Ember.js,Ember Data,Jasmine,总的来说,我试着用茉莉花测试我的余烬模型。在App.Model.find或App.Model.createRecord中。相反,我们有this.get('store')。find和this.get('store')。createRecord('model',{}) 如何在测试中控制存储? 注射库 我已经调查过了,但运气不好 包含。注入(这个“存储”、“存储”) 我想这是因为我注入到this中的对象不是正确的类型 创建存储 我还尝试在本地创建一个商店: describe("A Folder", f

总的来说,我试着用茉莉花测试我的余烬模型。在
App.Model.find
App.Model.createRecord
中。相反,我们有
this.get('store')。find
this.get('store')。createRecord('model',{})

如何在测试中控制存储? 注射库 我已经调查过了,但运气不好

包含。注入(这个“存储”、“存储”)

我想这是因为我注入到
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:无法调用未定义的方法“lookupFactory”


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

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

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 
    });
  });
});

如果您想要应用程序的存储,只需从容器中查找即可。在测试中这样做很好,但在生产中不要这样做:)


var store=App.\uuuuu容器\uuuuuu.lookup('store:main');

谢谢,这似乎让我走得更远,现在我得到“没有为“文件夹”找到模型”和“无法设置未定义的属性“存储”。好像没有工厂?我更新了答案。您的商店正在尝试访问文件夹模型,我认为您有一个名为Encomble.Folder的模型,对吗?测试的每个模型都需要使用container.register('model:modelName',ModelClass')注册。非常好,因为我要手动创建存储,所以我必须执行ember通常执行的任何操作。你能告诉我在哪里发生的(文档或源代码)?我知道这个容器没有被记录下来供公众使用,因为正如Ryan指出的那样,它会导致误用。这是,这些方法有一些文档。对我帮助很大,thnx!谢谢Ryan,我认为容器尚未(正确)设置。我没有为App定义容器查找('store:main');