は、私は、コードのこの部分が含まれている方法にユニットテストを書いています:ジャスミンを使って連鎖約束を模擬する方法は?
Name.get($scope.nameId).then(function(name){
Return name;
}).then(doSomething);
function doSomething(name)
はこのようになります。
function doSomething(name){
addNametoList(name);
}
私はコードのこの部分をテストする必要はありません。私はテストでそれを無視できないので(または私はできますか?)、私はそれを嘲笑する必要があります。私が最初に約束
spyOn(mockName, 'get').and.returnValues($q.resolve({"Mike"}));
を嘲笑し、それが第二then(doSomething)
を介して伝播だろうが、name
が機能addNametoList
でundefined
であると考えました。
私はモックdoSomething
も模倣しなければならないと思いますが、どうやってそれらをつなぎ合わせるか分かりません。
あなたはエラーを受け入れていますか?大文字の 'Return'は私にとって誤植のようです。それはどのように解決しましたか?あなたはジャスミンテストの終わりに約束を返しますか? – Icepickle
さて、コードにいくつかのタイプミスがあることに気付きました。デバッグの2日後に、私は$ q.resolve()の中にオブジェクトを正しく設定しなかったため、最終的にそれを見つけました。それ以外に、最初の約束を嘲笑することは第2の '.then(doSomething)'に伝播します。答える時間をとってくれてありがとう。 – CiCi
あなたには、誤字があります。 - and.returnValues' ...代わりに 'and.returnValue'を使用するべきではありませんか? **編集:** Nevermind、申し訳ありません、最新のジャスミン版には 'returnValues'が存在します... – plamut