眼镜:
灰烬版:1.13.8
节点:0.10.33
npm:2.13.4
我有
import Alias from "../../../services/alias";
....
moduleFor("controller:test", "Controller: test", {
integration: true,
beforeEach: function() {
this.register('service:alias', Alias, {singleton: true});
this.inject.service('alias', { as: 'alias' });
this.advanceReadiness();
},
});
...
test('Alias Alias Alias ', function(assert) {
var controller = this.subject();
//sample function
controller.send("test");
assert.equal(true, controller.alias.get("alias"), "alias should be true");
});
(以'别名'为例,因为我不允许显示实际代码)
我试图初始化服务,但在Ember Qunit测试期间,控制器没有注入服务.
我已经尝试将注入放入:init()而不是beforeEach,也不起作用......
如何在单元测试期间注入它?
我在调试器中放置断点以查看我的控制器是否具有该服务,在测试期间它没有.然而,在普通的余烬服务上这很好.
您不必导入服务.您必须在以下需求中包含服务.
moduleFor("controller:test", { needs: ['service:alias'] });
例如:
service/alias.js
Em.service.extend({ name: 'john' });
controllers/test.js
Em.Controller.extend({ alias: Em.service.inject(), test: function() { alert(this.get('alias.name'); } });
测试/单元/控制器/测试test.js
moduleFor('controller:test', { needs: ['service:store'] }); test('Alias Alias Alias', function(assert) { var controller = this.subject(); assert.equal(controller.get('store.name'), 'john); });
要运行此测试,Ember将生成一个带有controller test
和的容器service alias
.因此,您可以访问名称前缀的服务属性.