unit-testing - 将服务注入(inject) Ember 测试

标签 unit-testing ember.js ember-testing

我已阅读并关注EmberJS Service Injection for Unit Tests (Ember QUnit)但我仍然无法弄清楚问题出在哪里。

我想测试我的身份验证是否按预期工作。我已经为 ember-simple-auth 编写了身份验证器,并将 session 注入(inject)到路由中。代码本身没有任何问题。

export default Ember.Route.extend({
  authManager: Ember.inject.service('session'),
  ...
  (in actions):
    this.get('authManager').invalidate()

现在,我想创建一个测试来测试我的身份验证是否按预期工作。所以我希望直接使用authManager。

moduleFor('route:index', 'Unit | Route | xyz', {
  needs: ['service:session']
});

test('2', function(assert) {
  let route = this.subject();
  let s = route.get('authManager');

当我打印's'的内容时,我得到''。如果我将其更改为其他内容,则响应将如预期的那样未定义。问题是当我想获得属性“isAuthenticated”或运行“invalidate()”时。在这些情况下,我得到了“未定义”。我做错了什么?

最佳答案

从 Ember 2.13 开始,正确的解决方案是使用 this.register:

test('my test', function(assert) {
  this.register('service:session', Ember.Service.extend({
    /* mock code */
  }));

  let subject = this.subject();

  // test code goes here...
}

关于unit-testing - 将服务注入(inject) Ember 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37327986/

相关文章:

ember.js - 在动态位置插入部分/组件

ember.js - 测试时如何从组件中获取属性?

Python 模拟 : mocking base class for inheritance

python - 是否可以模拟 Python 3.6 中的内置 len() 函数?

database - 如何在 Symfony 2 中安全地对写操作进行单元测试?

javascript - 带有cli的ember.js中的夹具数据在哪里

angular - 我如何从 RXJS 5.5.6 模拟 fromEvent 函数?

javascript - 表单提交时的 Ember 刷新路线

javascript - Ember JS 教程 : TypeError: Cannot read property 'maps' of undefined

ember.js - 在测试 ember 组件集成测试时删除服务