Я хотел бы запустить некоторые модульные тесты по методу, приведенному ниже. Я передаю имитированный интерфейс ( vehicleObject ) в ProcessVehicles , но как только он пройден, он переназначается DetermineVehicleType , поэтому мой смоделированный объект бесполезен.Моей первой идеей было бы создать логическое значение, чтобы определить, следует ли запускать DetermineVehicleType , и добавить его в качестве параметра, но это звучит очень грязно.Есть ли лучший способ обойти это?
Метод с добавлением ложного объекта:
public void ProcessVehicles(ICarObject CarObject)
{
IObject vehicleObject = DetermineVehicleType(carObject);
vehicleObject.ProcessVehicle(carObject);
}
Оригинальный код:
public void ProcessVehicles()
{
IObject vehicleObject = DetermineVehicleType(carObject);
vehicleObject.ProcessVehicle(carObject);
}
Примечание: я не могуперед вызовом DetermineVehicleType проверьте, имеет ли значение VehicleObject значение null, поскольку оно может быть не равно нулю, когда класс фактически используется.В долгосрочной перспективе, возможно, тотальный рефакторинг - это ответ, на данный момент это не тот ответ, который я ищу, может быть, нет другого варианта.
метод DetermineVehicleType является приватным
Примечание: Iзнаю, что есть запахи кода, это устаревший код, который в настоящее время работает.Я хочу, чтобы тесты не меняли его, чтобы он выглядел красиво, а затем перерывы в производстве.Полное рефакторинг может быть единственным вариантом, я просто хочу убедиться, что нет другого решения с помощью инструментов моделирования.