Не найден основной конструктор или конструктор по умолчанию для Pageable в тесте Pact Contract Provider - PullRequest
0 голосов
/ 04 декабря 2018

Я установил следующий тест поставщика договора о договоре

@RunWith(SpringRestPactRunner.class)
@Provider("structures")
@PactFolder("pacts")
@VerificationReports({"console", "markdown"})
@SpringBootTest
public class ContractTest {

@MockBean
private MyServiceImpl myServiceImpl;

@Autowired
private MyController myController;

@Configuration
public static class TestConfiguration {
    @Bean
    public MyController myController() {
        return new MyController();
    }

}

@TestTarget
public final MockMvcTarget target = new MockMvcTarget();

@Before
public void setup() {
    MockitoAnnotations.initMocks(this);
    target.setControllers(myController);
}

@State("My state")
public void setupDocumentWithStructures() {
    Mockito.when(myService.getStructuresByDocumentId(
            ArgumentMatchers.eq("1"),
            ArgumentMatchers.any()
    )).thenReturn(new PageImpl<>(Arrays.asList(
            Structure.of("first"),
            Structure.of("second")
    )));
}
}

Запуск результатов теста в:

java.lang.AssertionError: 
0 - Request processing failed; nested exception is java.lang.IllegalStateException: No primary or default constructor found for interface org.springframework.data.domain.Pageable
java.lang.IllegalStateException: No primary or default constructor found for interface org.springframework.data.domain.Pageable

Метод getStructuresByDocumentId ожидает объект Pageable в качестве второго аргумента.Изменение аннотации @SpringBootTest на

@WebMvcTest(MyController.class)
@EnableSpringDataWebSupport

Не решает проблему.Есть идеи, как решить эту проблему?

1 Ответ

0 голосов
/ 03 апреля 2019

вы использовали "myService" в вашем setupDocumentWithStructures, тогда как ваш @MockBean - это myServiceImpl ....... Я думаю, вы хотели использовать myServiceImpl в setupDocumentWithStructures

...