总的来说,我正试图用茉莉花来测试我的余烬模型。在Ember Data 1.0.0 we no longer have App.Model.find
或App.Model.createRecord
。相反,我们有this.get('store').find
和this.get('store').createRecord('model', {})
。
我调查了injecting it,但没有运气。
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
我认为这是因为容器不存在(及时?)
答案 0 :(得分: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
});
});
});
答案 1 :(得分:2)
如果您想要应用程序的商店,您可以从容器中查找它。这在测试中很好,但是在生产中不敢这样做:)
var store = App.__container__.lookup('store:main');