0
我已經看到一些人從Mockito切換到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;
}};
}
我明白那一部分。我不知道該如何處理JMockit允許的參數以及JMockit特定註釋(如@Cascading –
)@ @ Cascading'行爲可以通過使用'@ Mock'註釋的適當默認回答(或者'Mockito.mock '電話)。對我來說,對於'@ Cascading',最好的Mockito等價物是'Mockito.RETURNS_MOCKS'。看到有一些不錯的東西的mockito文檔:http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html#RETURNS_MOCKS –
在我的情況下,我發現'@Mock(answer = Answers.RETURNS_DEEP_STUBS )'是我需要爲'@ Cascading'做的事情 –