1
私は、呼び出されたときに約束を返すファクトリをスタブする必要があるAngularJs単体テストを書いています。私は後でローカルスコープの遅延オブジェクトを使用して、テストで手動で約束を解決します。ユニットテストで延期されたことから約束を返すスタブ付きファクトリを設定しますか?
は私が
let currentUser
beforeEach(module(($q, $provide) => {
currentUser = $q.defer()
$provide.factory('gettingCurrentUser',() => currentUser.promise)
}))
をやろうとしています。しかし、module
ブロックの中に注入することはできません$q
のように思えるので、これは動作しません。もちろん、inject
ブロックに変更すると、$provide
はもはや注射可能ではありません!
私はこの問題を数多くの方法でハックすることができますが、ハッキングを必要とするエッジケースになるのは簡単すぎるようです。
これを行う「正しいAngularJs」の方法は何ですか?
これは私が「これをハックすることができる」と言ったときに話していたアプローチの1つです。本当に問題を処理する推奨方法ですか?それはとてもハッキーなようです。 –
それはいつものことです。私は、繰延を使用するアプローチがより不器用であることを発見します。 「ハッキー」と思われる理由は、このようなファクトリ・サービスがクラス・インスタンスではなく、それ以外のものではこのような問題を戻すということです。 OOPのパラダイムに従って、 'auth.getCurrentUser'のようないくつかのクラスメソッドを持っていると、この問題は起こりません。 JasmineのcreateSpyObjまたはcreateSpyでスタブし、いつでも 'returnValue'を割り当てることができます。 – estus