アプリケーションのバグを修正するために、postLogin
という名前の既存のメソッドに呼び出しを追加することにより、という名前のメソッドを変更しましたgetShoppingCart
。
コード
protected void postLogin() {
getShoppingCart();
}
ただし、単体テストを作成する最適な方法が何であるかはわかりませんpostLogin
。
アプローチ1
Mockitoのverifyを使用して、メソッドが呼び出されたことを確認します。
verify(mock).getShoppingCart();
アプローチ2
ユーザーのショッピングカートの値を取得して、メソッド呼び出しの副作用をテストします。
AssertNotNull(user.getShoppingCart());
1つのアプローチは他のアプローチよりも優れていますか?
getShoppingCart()
メソッドに副作用がない限り、メソッドが呼び出されることをテストする必要はありません。副作用がある場合、getXXX()
メソッドは慣習的にべき等であるため、実際に名前を変更する必要があります。
getNextValue
?おそらく、誰かが「ゲッターと呼ばないで、名前をnextValue
」に変更できますが、getNext
以前に使用されたことはあります。おそらく、より良い例は電子を表すオブジェクトでしょう。電話しgetPosition
たらどうなりますか?またはさらに悪いことにgetPosition(); getVelocity();