package com.kyu.svc.component.user.service;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.runners.MockitoJUnitRunner;
import org.mockito.stubbing.Answer;
import com.kyu.svc.component.user.dao.UserDAO;
import com.kyu.svc.component.user.domain.AdminUser;
/**
* @FileName : UserServiceMockitoTest.java
* @Project : mySpringProject
* @Date : 2013. 8. 5.
* @작성자 : 이남규
* @프로그램설명 :
*/
@RunWith(MockitoJUnitRunner.class)
public class UserServiceMockitoTest {
/**
* @Mock을 이용하면 mock(UserDAO.class); 와 같은 코드를 호출하지 않아도 되고,
* MockitoJUnitRunner.class에 의해 자동으로 목 객체가 생성된다.
*
* */
@Mock
private UserDAO userDAO;
@InjectMocks
private UserService userService = new UserService();
@Before
public void init() {
when(userDAO.getUser("kyu")).thenAnswer(new Answer<AdminUser>() {
@Override
public AdminUser answer(InvocationOnMock invocation) throws Throwable {
AdminUser adminUser = new AdminUser();
adminUser.setUserName("namkyu");
adminUser.setAge(32);
return adminUser;
}
});
when(userDAO.getUserCnt()).thenReturn(10);
}
@Test
public void annotationMockTest() {
AdminUser adminUser = userService.getUser("kyu");
assertThat("namkyu", is(adminUser.getUserName()));
assertThat(32, is(adminUser.getAge()));
assertThat(10, is(userDAO.getUserCnt()));
}
}