2015-10-28 3 views
0

Я видел несколько примеров перехода людей из Мокито в JMockit, но я делаю наоборот. Я не уверен, что делать с параметрами @Mocked. Они просто становятся переменными экземпляра @Mock? Я думаю, что пункт NonStrictExpectations должен стать «когда» пункты, как:Преобразование из рамки JMockit в Mockito

when(rpManager.login()).thenReturn(true); 

и Проверки раздел становится «проверить» положение.

Это пример полного тестового примера, который я конвертирую.

@Test 
public void testGetOffersUnsuccessfulResponse(@Mocked final RPRequest mockRequest, @Mocked final RPResponse mockResponse) { 

    final String sessionId = "123"; 

    new NonStrictExpectations() {{ 
     rpManager.login(); returns(true); 
     rpManager.newRequest(anyString); returns(mockRequest); 
     mockRequest.sendRequest(); returns(mockResponse); 
     mockResponse.isSuccess(); returns(false); 
    }}; 

    final EpiphanyConnection connection = new EpiphanyConnection(getDummyConnectionProperties(), getDummyActionMapping()); 
    assertTrue(connection.connect()); 

    final InteractionContext interactionContext = new InteractionContext(); 
    interactionContext.setRequestContext(new RequestContext()); 
    interactionContext.getRequestContext().setAction(getDummyActionMapping().keySet().iterator().next()); 

    interactionContext.setUserContext(new UserContext()); 
    interactionContext.getUserContext().setSessionId(sessionId); 

    final OfferTranslator offerTranslator = connection.fetchCommunications(interactionContext); 
    assertNotNull(offerTranslator); 

    new Verifications() {{ 

     // failure in the below likely indicates mismatched JSON string. 
     mockRequest.setData("SessionId", sessionId); 
     mockRequest.sendRequest(); times=1; 
    }}; 
} 

ответ

2

Mockito, вы правы там, не ожидает каких-либо when положение, чтобы быть на самом деле необходимо. Как следует из названия, КОГДА это и так происходит, тогда сделайте что-нибудь - если этого не произойдет, тогда это нормально.

Чтобы убедиться, что что-то действительно было вызвано, используйте verify.

@Mock создаст высмеивал экземпляр, правильно:

@Mock 
private MyService service; // will result in a mocked "MyService" instance 

Не забудьте либо позвонить MockitoAnnotations.initMock(this); или использовать @RunWith(MockitoJUnitRunner.class), чтобы убедиться, что аннотации фактически используются.

+0

Я понимаю это часть. Я не уверен, что делать с параметрами, разрешенными JMockit, а также конкретными аннотациями JMockit, такими как @Cascading –

+0

поведение '@ Cascading' может быть выполнено с помощью соответствующего ответного ответа по умолчанию для аннотации' @ Mock' (или 'Mockito.mock 'call). Мне кажется, что для '@ Cascading' лучшим лучшим эквивалентом Mockito будет' Mockito.RETURNS_MOCKS'. См. Документ mockito, в котором есть интересные материалы: http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html#RETURNS_MOCKS –

+1

В моей ситуации я обнаружил, что '@Mock (answer = Answers.RETURNS_DEEP_STUBS) 'было то, что мне нужно было сделать для' @ Cascading' –

Смежные вопросы