1
的Mockito我
想測試我的卡塔西斯ResourceRepository(卡塔西斯彈簧2.1.7)中配置的行爲:測試卡塔西斯JsonApi與MockMvc和
import io.katharsis.queryParams.QueryParams;
import io.katharsis.repository.ResourceRepository;
import org.springframework.stereotype.Component;
@Component
public class UserResourceRepository implements ResourceRepository<UserDTO, String> {
@Autowired
private UserRepository databaseRepository;
@Override
public UserDTO findOne(String email, QueryParams queryParams) {
return null;
}
@Override
public Iterable<UserDTO> findAll(QueryParams queryParams) {
return null;
}
@Override
public Iterable<UserDTO> findAll(Iterable<String> iterable, QueryParams queryParams) {
return null;
}
@Override
public void delete(String email) {
}
@Override
public UserDTO save(UserDTO s) {
return null;
}
}
我想用類似的方法來測試它,因爲我與正常,春控制器做到這一點,使用到的Mockito嘲笑數據庫存儲庫,並使用MockMvc:
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import java.util.Optional;
import static org.mockito.Mockito.when;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@RunWith(MockitoJUnitRunner.class)
public class UserJsonApiTest {
@InjectMocks
private UserResourceRepository resourceRepository;
@Mock
private UserRepository databaseRepository;
private MockMvc mockMvc;
@Before
public void setup() {
mockMvc = MockMvcBuilders.standaloneSetup(resourceRepository).build();
}
@Test
public void first() throws Exception {
Optional<UserEntity> user = Optional.of(new UserEntity().
id(1).
email("[email protected]").
firstName("test first name").
lastName("test last name").
pass("test pass"));
when(
databaseRepository.
findOneByEmail(user.get().getEmail())).
thenReturn(user);
mockMvc.perform(
get("https://stackoverflow.com/users/" + user.get().email())).
andExpect(status().isOk())
;
}
}
顯然,這個代碼不工作,因爲我的卡塔西斯UserResourceRepository是不是一個真正的控制器。到目前爲止,我已經從日誌中瞭解到它實際上使用了一些名爲io.katharsis.spring的過濾器映射和類。 KatharsisFilterV2。
有沒有辦法使用MockMvc進行這樣的測試?如果沒有 - 是否有其他方式可以測試它,而無需啓動整個服務器(嘲笑)?