unit.jsアプリケーションに単体テストしたいJSメソッドがあります。これは、サービスメソッドに複数の呼び出しを行い、そのたびにそのサービスにコールバックを渡します。コールバックは結果を蓄積します。Jasmineを使用して引数の値に基づいてJSコールバックをスタブします
スタブを呼び出すたびに、引数で指定された応答でコールバックを呼び出すように、Jasmineを使用してサービスメソッドをスタブする方法はありますか。
これは、(のような)私はテストだ方法である:
function methodUnderTest() {
var result = [];
var f = function(response) {result.push(response)};
service_method(arg1, arg2, f);
service_method(other1, other2, f);
// Do something with the results...
}
私はservice_methodがARG1とARG2で呼び出されたとき、スタブは、特定の応答でFコールバックを起動することを指定したい、とother1とother2と一緒に呼び出されると、同じコールバックを別の特定のレスポンスで呼び出します。
私は別のフレームワークも考えています。 (私はNodeunitを試しましたが、私が望むようにすることはできませんでした)
私の質問を誤解しています。なぜ私は思っています。私は実際にmethodUnderTest()をテストしています。依存関係(この場合はservice_method())を呼び出した後、結果を蓄積することを確認したい。 – Ladlestein
ここで、内部メソッドfをテストしたいと思っています。しかし、なぜあなたはservice_method()を模倣したいのですか?ここにあなたのモジュールの一部ではありません。もしそうなら、それを嘲笑しないでください。 –
いいえ、Andreas - もちろん、methodUnderTest()をテストしたいと思います。これはservice_method()に依存します。これは、値を返す代わりにコールバックを呼び出します。 service_method()は私がスタブしたいものです。それは応答とともにf()に返されます。私は自分のモックservice_method()をコールバックしたい。 私はSinon.JSを使用してservice_method()をスタブし、スタブされた "return"値でコールバックを呼び出しました。 – Ladlestein