NoClassDefFoundError: org / springframework / web / bind / MissingMatrixVariableException - тестирование репозиториев / интерфейсов - PullRequest
0 голосов
/ 17 апреля 2019

Вот проблема: я продолжаю сталкиваться с 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. Есть идеи?

...