当前位置:  开发笔记 > 编程语言 > 正文

EmberJS单元测试服务注入(Ember QUnit)

如何解决《EmberJS单元测试服务注入(EmberQUnit)》经验,为你挑选了1个好方法。

眼镜:

灰烬版: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,也不起作用......

如何在单元测试期间注入它?

我在调试器中放置断点以查看我的控制器是否具有该服务,在测试期间它没有.然而,在普通的余烬服务上这很好.



1> 小智..:

您不必导入服务.您必须在以下需求中包含服务.

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.因此,您可以访问名称前缀的服务属性.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有