나는 Mockito 1.9.5를 사용하여 메서드를 시도하고 테스트합니다. 나는 그것을 테스트하기 위해 노력하고 방법반환 값을 조롱
@Autowire
AuditLogRepository auditlogRepository;
//method stuff abbreviated out
if (authentic.isAuthorized()) {
menuService.updateUserWithMenu(authentic);
AuditLog auditor = Helper.buildAuditor(authentic);
auditor.setAccessPoint(request.getRequestURL().toString());
....
AuditLog createdAuditLog = auditlogRepository.save(auditor);
logger.debug("Created AuditLog id = " + createdAuditLog.getID());
...
}
그리고 여기에 있습니다 : : 여기에 방법이다
그것은 내가 상관없이 보이는@InjectMocks
LoginController loginController;
@Mock
AuditLog aLog;
@Mock
AuditLog createdAuditLog;
@Mock
AuditLogRepository auditlogRepositoryMock;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
this.mockMvc = MockMvcBuilders.standaloneSetup(loginController).build();
}
@Test
public void testLogin() throws Exception {
...
AuditLog aLog = mock(AuditLog.class);
when(auditlogRepositoryMock.save(aLog)).thenReturn(createdAuditLog);
when(createdAuditLog.getID()).thenReturn(new Long(1));
는 Mockito은 항상 기본 요소를 제외하고, null를 돌려줍니다. 하지만 내 코드는 반환 값에 따라 작동 할 것입니다. 그래서 내 질문에 null 포인터를 얻지 않고 이것을 테스트하는 방법은 무엇입니까? Mockito는 메서드 호출에서 객체를 반환 할 수 있습니까?
저는 Mockito (약 4 개월 만 사용하고 있습니다)에 익숙해 져 있으므로 답변 대신 댓글을 게시하겠습니다. 나는 당신이 객체 ('aLog')로'save()'를 호출 할 때만'createdAuditLog'를 반환한다고 말하는 것 같습니다. 나는 Matcher 클래스를 사용하여 when/thenReturns를 설정하고있다. 이 때처럼 (auditlogRepositoryMock.save (Matchers.any (AuditLog.class)) .Return (createdAuditLog); ' – Kyle
예, mockito가 객체를 반환 할 수 있습니다. nullpointer에 대한 자세한 정보를 제공 할 수 있습니까? – Vegard
@Kyle of my view 귀하의 의견을 맞습니다. 메서드는 저장 aLog 인스턴스를 사용하여 호출되지 않은 경우 반환되지 않습니다 및 mockito 그의 기본 동작을 사용합니다. 완전한 코드없이 이것은 최고의 대답입니다. 그래서 답변으로 게시;). – mszalbach