Потеря насмешки, если в классе реализации максимизируется объект, равный нулю - PullRequest
0 голосов
/ 19 июня 2019

Я хочу смоделировать объект, который работает в цикле.Код должен быть протестирован таким образом, чтобы объект (который я хочу смоделировать) повторно инициализировался на каждой итерации.Поэтому, когда я высмеиваюсь, я вижу, что смоделированный объект существует в первый раз, но проигрывает после повторной инициализации.

loop {
TripPlan tripPlan = solver.make(something);
        solver= new ArkSolver();
}

- это объект, который я хочу смоделировать.

Тестовый код:

public class TestArkTripPlanManager { 
   @Mock Solver solver; 
   PlanManager planManager; 
   @Test 
   public void testExecute_Two_Ark() throws RoutingServiceException, IOException, VRPSolverException {
      when(solver.make(case1).thenReturn(expectedcase1); 
      when(solver.make(case2).thenReturn(expectedcase2); 
      planManager.setsolver(solver);
      planManager.execute(); 
   }

1 Ответ

0 голосов
/ 19 июня 2019

Вы можете изменить способ приобретения решателя.

solver = acquireSolver();

ArkSolver acquireSolver() {
    return new ArkSolver();
}

Затем из теста вы можете контролировать, какой тип решателя вы предоставляете этим методом.

@Before
public void setUp() throws Exception {
    underTest = new MyClass() {
        @Override
        public ArkSolver acquireSolver() {
            return <your mock here>;
        }
    };
}

Я не знаю, почему вы хотите каждый раз создавать новый решатель(возможно, некоторые внутренние состояния остаются после метода make), но вы можете попытаться вернуть солвер в исходное состояние, чтобы вы могли использовать его снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...