静的メソッドをモックできないモック フレームワーク (Mockito) を使用しようとしているため、質問しています。調べてみると、かなりの数のブログ投稿で、静的メソッドはできるだけ少なくすべきだと言っているのを見つけましたが、その理由を理解するのに苦労しています。具体的には、メソッドがグローバル状態を変更せず、基本的にヘルパー メソッドである理由です。たとえば、ApiCaller
いくつかの静的メソッドを持つというクラスがあります。静的メソッドの目的の 1 つは、HTTP 呼び出しを実行し、サーバーが返したカスタムの問題 (ユーザーがログインしていないなど) を処理し、応答を返すことです。単純化すると、次のようになります。
public class ApiCaller {
...
public static String makeHttpCall(Url url) {
// Performs logic to retrieve response and deal with custom server errors
...
return response;
}
}
これを使用するには、呼び出すだけですApiCaller.makeHttpCall(url)
。次のように、これを非静的メソッドに簡単に作成できます。
public class ApiCaller {
...
public String makeHttpCall(Url url) {
// Performs logic to retrieve response and deal with custom server errors
...
return response;
}
}
次に、このメソッド呼び出しを使用しますnew ApiCaller().makeHttpCall()
が、これは余分なオーバーヘッドのように思えます。なぜこれが悪いのか、そしてモッキングフレームワークを使用してこれらのメソッドをスタブ化できるように、メソッドを非静的にする (キーワードを削除する以外に) より良い解決策があるかどうかを誰かが説明できますか?
ありがとう!