在 ember-cli 中测试扩展核心 ember 对象
Testing extended core ember objects in ember-cli
我创建了一个 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 生成的默认文件,完全没有修改
由于在 ember 1.12 中引入了 ember 实例初始值设定项,我的问题中的初始值设定项将不再随着 ember 的发展向前推进,因为调用 lookup
在容器上已弃用。同样根据@tomdale,我使用 deferReadiness/advanceReadiness 是一种在初始化程序中提供同步性的 hacky 方式,因此不鼓励使用。建议改用应用路由来实现该功能
这个解释的很好on GitHub
此外,在 ember-data 的更新版本中,商店已移至服务中。因此我的自定义商店必须移动到我的 ember-cli 项目的 services
文件夹中。因此,现在使用与 ember-cli
捆绑的测试套件进行测试变得微不足道
我创建了一个 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 生成的默认文件,完全没有修改
由于在 ember 1.12 中引入了 ember 实例初始值设定项,我的问题中的初始值设定项将不再随着 ember 的发展向前推进,因为调用 lookup
在容器上已弃用。同样根据@tomdale,我使用 deferReadiness/advanceReadiness 是一种在初始化程序中提供同步性的 hacky 方式,因此不鼓励使用。建议改用应用路由来实现该功能
这个解释的很好on GitHub
此外,在 ember-data 的更新版本中,商店已移至服务中。因此我的自定义商店必须移动到我的 ember-cli 项目的 services
文件夹中。因此,现在使用与 ember-cli