我创建了一个ember-cli应用程序,我需要从ember-data扩展默认存储 . 为此,我在app / store.js创建了一个文件,并简单地扩展了商店:
export default DS.Store.extend({
findOrCreateRecord: function(type, properties, preload) {
...
}
});
这很好用,但是当我来测试使用这种新方法的初始化器时,我收到以下错误:
'undefined' is not a function (evaluating 'store.findOrCreateRecord()')
我有什么需要做的测试才能在这里玩得很好吗?我正在测试的文件是下面的初始化程序:
export function initialize(container, app) {
var store = container.lookup('store:main');
app.deferReadiness();
store.findOrCreateRecord('order', basketToken).then(function(basket) {
container.register('basket:main', basket, { instantiate: false });
app.inject('controller:basket', 'model', 'basket:main');
app.advanceReadiness();
});
}
至于测试文件本身,它是ember-cli生成的默认值,完全没有修改
1 回答
由于在ember 1.12中引入了ember实例初始化程序,我的问题中的初始化程序将不再继续使用ember开发,因为不推荐在容器上调用
lookup
. 同样根据@tomdale,我使用deferReadiness / advanceReadiness是一种在初始化器中提供同步性的一种hacky方式,并且不鼓励使用 . 建议使用应用程序路由来实现此功能 .这很好地解释了on GitHub
此外,在更新版本的ember-data中,商店已被转移到服务中 . 因此,我的自定义商店必须移动到我的ember-cli项目的
services
文件夹中 . 因此,使用与ember-cli捆绑在一起的测试套件进行测试现在变得微不足道