我已阅读并关注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/