В настоящее время я пытаюсь выполнить некоторые модульные тесты на моем весеннем REST API, который защищен с помощью Spring Security, так как мне нужен контекст моего веб-приложения внутри моего тестового класса, и так как я запускаю его с SpringJUnit4ClassRunner.class
, я не очень уверен, как мне перейти к использованию mockito, если я не могу запустить его с mockitojunitrunner.
Вот мой тестовый класс
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "file:src/test/java/resources/ProductCRUD-servlet.xml")
@WebAppConfiguration
public class ProductControllerTest
{
@Autowired
WebApplicationContext context;
@InjectMocks
private ProductRestController productRestController;
@Mock
private ProductService productService;
private MockMvc mockMvc;
@Before
public void setup()
{
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders
.webAppContextSetup(context)
.apply(springSecurity())
.build();
}
@Test
@WithMockUser(username = "test", password = "123")
public void getAllProductsTest() throws Exception
{
List<Product> products = new ArrayList<>();
products.add(new Product("4532", 123, "Product test", "test"));
Mockito.when(productService.getProducts())
.thenReturn(products);
mockMvc.perform(MockMvcRequestBuilders
.get("/product/list/getProducts"))
.andExpect(status().isOk())
.andExpect(content().string(containsString("\"productId\":\"4534\"")));
}
Как и ожидалось, mockito Mockito.when
не издевается что угодно, и этот вызов API на самом деле возвращает мои реальные данные, но я не хочу делать интеграционные тесты, есть идеи, как можно использовать mockito с springjunit?