2017-02-11 17 views
0

я добавил ожидание для метода, как это,Android EasyMock, как добавить еще один ожидание без сброса фиктивного

expect(locationManager.isLocationSettingsEnabled(anyObject(FragmentActivity.class))).andReturn(isLocationEnabled).anyTimes(); 

replay(locationManager); 

Но когда я добавляю, ожидание еще один метод (упомянутый ниже) после переигровки , первый метод сбрасывается автоматически.

expect(locationManager.isNotificationSettingsEnabled(anyObject(FragmentActivity.class))).andReturn(isNotificationsEnabled).anyTimes(); 

Я хотел бы знать, как добавить еще одно ожидание без его перезагрузки.

+0

Я думаю, вы должны использовать [google mock] (http://stackoverflow.com/questions/5743236/google-mock-multiple-expectations-on-same-function-with-different-parameters) или [mockito] (http://stackoverflow.com/questions/8088179/using-mockito-with-multiple-calls-to-the-same-method-with-the-same-arguments). –

ответ

1

Функции Easymock по этому принципу.

  • Когда вы устанавливаете некоторые ожидания по методу, вы обычно подделываете/издеваетесь над поведением этого метода.
  • Теперь, когда вы вызываете replay(mockObject), Easymock вводит это издеваемое поведение в среде Test Runner.

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

что-то вроде этого:

EasyMock.expect(mockObject.method1()).andReturn(null); 
EasyMock.expect(mockObject.method2()).andReturn(null); 

EasyMock.replay(mockObject); 

Присмотревшись на свой вопрос, я вижу, что Вы насмехаясь один метод с двумя различными обратными пунктами вы можете сделать что-то вроде этого:

EasyMock.expect(mockObject.method1()).andReturn(new Integer(1)).once(); 
EasyMock.expect(mockObject.method1()).andReturn(new Integer(2)).once(); 

EasyMock.replay(mockObject); 

этим Easymock вернет 1 как вывод для первого раза при вызове метода и 2, когда метод вызывается во второй раз.

Надеюсь, что это поможет!

Удачи вам!

+1

В качестве побочного примечания 'once()' не требуется, так как это значение по умолчанию. И вы также можете передавать вызовы 'andReturn (1) .andReturn (2)'. – Henri

+0

@ Хенри благодарит за это – Vihar