gpt4 book ai didi

ember.js - 将服务注入(inject) mixin Ember2.3+

转载 作者:行者123 更新时间:2023-12-02 06:07:24 25 4
gpt4 key购买 nike

当我尝试检查 时,我遇到了单元测试套件中弹出的错误问题。注入(inject) Mixin 的服务 自从 getOwner()已添加到 Ember 中(弃用指南 here )。

这是我的混音:

import Ember from 'ember';

export default Ember.Mixin.create({
sha: Ember.inject.service('sha512'),
});

这是我由 ember-cli 生成后的基本单元测试略有变化:
import Ember from 'ember';
import DirtyRelationshipsDetectorMixin from 'xamoom-customer/mixins/dirty-relationships-detector';
import { module, test } from 'qunit';

module('Unit | Mixin | dirty relationships detector');

test('it works', function(assert) {
let DirtyRelationshipsDetectorObject = Ember.Object.extend(DirtyRelationshipsDetectorMixin);
let subject = DirtyRelationshipsDetectorObject.create();
assert.ok(subject);
assert.ok(subject.get('sha')); // problem occurs here
});

我收到的错误消息很清楚,但我还没有找到解决方案:

Error: Assertion Failed: Attempting to lookup an injected property on an object without a container, ensure that the object was instantiated via a container.



应用程序运行时服务就在那里,只是测试失败。
Ember 2.5.1 - Ember-CLI 2.5.0

最佳答案

如果您使用 Ember.getOwner(target)你不能只是.create()目标,但 inject the owner..create(owner.ownerInjection()) .通常,所有者是一个应用程序实例。

编辑:

您实际上正在使用 getOwner当您使用 Ember.inject .它就像一个捷径:

sha: Ember.computed({
get() {
return Ember.getOwner(this).lookup('service:sha');
}
})

关于ember.js - 将服务注入(inject) mixin Ember2.3+,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37190648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com