如何在单元测试中将商店注入Ember.Service?

cha*_*ers 10 javascript unit-testing ember.js ember-cli

在我的应用程序中,我有这个初始化程序,它将商店注入所有服务:

export function initialize(container, application) {
  application.inject('service', 'store', 'store:main');
}

export default {
  name: 'inject-store-in-services',
  initialize: initialize
};
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我运行单元测试时,服务没有store属性.所以我的问题是:有没有办法实现我的初始化程序在单元测试上下文中的作用?

jmu*_*yau 13

在最近的Ember版本中,您可以将商店注入服务,例如:

Ember.Service.extend({
  store: Ember.inject.service()
});
Run Code Online (Sandbox Code Playgroud)

它从属性名称中获取服务名称,因此如果您将其称为其他内容,则需要指定"store".例如:

Ember.Service.extend({
  banana: Ember.inject.service('store')
});
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,"试图注入未知的注射:'服务:商店`". (6认同)
  • 它记录在某处.另外,请注意,如果你这样做,你将不得不说'this.get('store')`而不是`this.store`. (4认同)