私は基本的に、これは私はあなたが私を見ることができるように同じクラスにあるメソッド呼び出しを模擬します。私はテストしています、実際にはコードのにおいですか?
class CarServiceImpl{
public Car findById(String id){
//call repository layer to find a car
}
public void deleteById(String id){
Car car = this.findById(id);
if(car != null){
//Call repository layer to update the car
}else{
Throw NotFOundException();
}
}
}
をテストしようとしているクラスである、(リポジトリ層を呼び出し、必要に応じていくつかの操作を行うための責任)サービスクラスをテストしようとしています私の質問があるので、deleteByIdメソッドのfindByIdメソッドを呼び出します。
同じクラスのメソッドを呼び出すのは本当に臭いですか?私はidで車を見つけるために別のクラスを作るべきだとは思わない。私は
Mockito.when(carServiceImpl.findById("car1")).thenReturn(carModel);
を使用する場合、私は「deleteById」法上の「findById」への呼び出しを模擬することができ、それは私も、あまりにもidで見つけるためのレポジトリへの呼び出しを模擬する必要がありますので、メソッドを呼び出すスティルス方法私はすでにfindByIdメソッドをテストしました。
'findById'操作を' deleteById'の呼び出し元に任せてはどうでしょうか? any1が存在しないidを渡した場合、リポジトリは適切な例外をスローし、 'CarServiceImpl'はアプリケーションが理解できる何かの例外をキャッチして(必要に応じて)変換することができます。 – pedromss