ユニットテストスイートでポップアップすると、サービスがに登録されているサービスにチェックインしようとすると、問題が発生します。getOwner()
がEmberに追加されましたhere)。サービスをミックスインに注入するEmber2.3 +
これは私のミックスインである:
import Ember from 'ember';
export default Ember.Mixin.create({
sha: Ember.inject.service('sha512'),
});
これはわずか燃えさし-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.
サービスが実行されているときに、それはちょうど失敗したテスト。 エンバー2.5.1 - エンバー-CLI
ありがとうございます。 Ember.getOwner()は使用していません。 私はcreate()を以下のように変更しようとしました: 'let subject = DirtyRelationshipsDetectorObject.create(Ember.getOwner(this).ownerInjection());' 'これはアプリケーションインスタンスではないので失敗します。 – Pavol
回答を編集しました。ユニットテストなので、サービスを利用するとどうなるでしょうか? – Lux
あなたがショートカットのことを説明したように、今、意味があります。私はそれをうまくやっていますか?私はこのプロパティを明示的にテストし、それを模擬すべきではありません。 – Pavol