使用@QueryDsl谓词和页面的测试控制器

时间:2019-02-28 15:04:21

标签: spring-boot junit mockito rest-assured

我有一个控制器,该控制器带有@RestController注释。对于GET请求,它是这样实现的:

m[1]

Controller工作正常,我可以使用不同的参数进行查询并获得具有定义大小的页面。

现在我要测试控制器。

@GetMapping
public Map<String, Object> getFilteredCars(
      @QuerydslPredicate(root = Car.class) Predicate predicate,
      @RequestParam(name = "page", defaultValue = "0") int page,
      @RequestParam(name = "size", defaultValue = "150") int size
) {
    return this.carService.getFilteredCars(
            predicate,
            PageRequest.of(page, size)
    );
}

运行此命令给我一个例外:

@RunWith(MockitoJUnitRunner.class)
@SpringBootTest
class CarControllerTest {

@Mock
private CarService carService;

@InjectMock
private CarController carController;

@BeforeEach
void init(){
    RestAssured.baseURI = "http://localhost";
    RestAssured.port = 8810;
}

@Test
void givenUrl_whenSuccessOnGetCarsAndReturnsPage_thenCorrect() {

   when(this.CarService.getFilteredCars(any(),any()))
       .thenReturn(expectedResponse);

    given()
        .standaloneSetup(new CarController(this.carService))
    .when()
        .get("/cars?color=red&page=0&size=200")
    .then()
        .statusCode(200);
}

就像我添加的question一样

No primary or default constructor found for interface com.querydsl.core.types.Predicate

现在我得到一个新的例外:

@EnableSpringDataWebSupport 

我不知道发生了什么。有没有人知道如何解决问题?

0 个答案:

没有答案