Вот проблема: я продолжаю сталкиваться с MissingMatrixVariableException в моей трассировке стека при попытке проверить мои интерфейсы репозитория. У меня 5 и я хочу увеличить общее покрытие кода.
Будь милым - я нуб. Я попытался издеваться над моими собственными исследованиями, и это было немного ошеломляющим.
Я попробовал Mocking репозитория и создал мои переменные MockMvc mockMvc. Я установил MockitoAnnotations.initMocks (это);
Я запускаю тест, и при любом тестировании я сталкиваюсь с ошибкой MissingMatrixVariableException.
Я ничего не нашел в стеке / Google ищет это исключение при тестировании репозиториев.
package example.repository;
import example.model.Metrics;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@EnableJpaRepositories
public interface MetricsRepository extends JpaRepository<Metrics, Long> {
List<Metrics>findByDate(String date);
@Modifying
@Transactional
@Query(nativeQuery = true, value = "delete from backlogreport.metrics where date = ?1")
void deleteDate(String date);
}
Это мой тестовый класс:
package example.repository;
import example.controller.RestApiController;
import example.model.Metrics;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.test.web.servlet.setup.StandaloneMockMvcBuilder;
import java.util.Collections;
import static org.mockito.Mockito.when;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
public class MetricsRepositoryTest {
@InjectMocks
private RestApiController restApiController;
@Mock
private MetricsRepository MetricsRepository;
private MockMvc mockMvc;
@Before
public void setUp(){
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.standaloneSetup(restApiController).build();
}
@Test
public void shouldGetByDate() throws Exception {
Metrics Metrics = new Metrics();
Metrics.setDate("2019-04-01");
Metrics.setAgeLength("20 days old");
when(MetricsRepository.findAll())
.thenReturn(Collections.singletonList(Metrics));
mockMvc.perform(get("/report/2019-04-01"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andDo(print());
}
}
Я пытаюсь добиться того, чтобы при настройке mockMvc я указывал дату, которая принимает строку («2019-04-01») и длину возраста («20 дней»).
Затем я выполняю свой urL "get" и ожидаю, что состояние в порядке, затем печатаю ... за исключением того, что я продолжаю нажимать это исключение MissingMatrixVariableException. Есть идеи?