以下のメソッドでいくつかの単体テストを実行したいと思います。モック化されたインターフェイス ( vehicleObject ) をProcessVehiclesに渡していますが、渡されるとすぐに、DeterminVehicleTypeによって再割り当てされるため、モック化されたオブジェクトは役に立ちません。私の最初のアイデアは、ブール値を作成して、 DeterminVehicleTypeを実行し、それをパラメーターとして追加する必要があるかどうかを判断することですが、それは非常に面倒に聞こえます。これを回避するより良い方法はありますか?
Mock オブジェクトが注入されるメソッド:
public void ProcessVehicles(ICarObject CarObject)
{
IObject vehicleObject = DetermineVehicleType(carObject);
vehicleObject.ProcessVehicle(carObject);
}
元のコード:
public void ProcessVehicles()
{
IObject vehicleObject = DetermineVehicleType(carObject);
vehicleObject.ProcessVehicle(carObject);
}
注:クラスが実際に使用されるときに null ではない可能性があるため、DetermineVehicleTypeを呼び出す前に vehicleObject が null であるかどうかを確認できません。長期的には、完全なリファクタリングが答えになるかもしれませんが、現時点では、それは私が探している答えではないかもしれません。
メソッド IdentifyVehicleType は非公開です
注: コードの匂いがあることはわかっています。これは、現在動作しているレガシー コードです。私はそれを変更せずにテストしたいので、見栄えが良く、本番環境で壊れます。完全なリファクタリングが唯一のオプションかもしれませんが、モック ツールを使用した別のソリューションがないことを確認したいだけです。