如何测试/模拟和通过CRUDRepository生成的API Rest?

时间:2018-10-05 13:19:24

标签: java rest unit-testing automated-tests

我想为REST API生成自动化测试。 我的控制器有一种已经从数据库获取列表的方法,并且 生成JSON:

@Path("/mrp/banco")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Response getFromDB() {
        try {
            List<MRP> list = new LinkedList<MRP>();
            list = repository.select();
            LOGGER.info("tamanho da lista/tuplas : " + list.size());
            return Response.ok().entity(list).build();
        } catch (Exception e) {
            System.out.println(e);
        }

        return null;
    }

我不知道如何编写junit测试。即使有模拟。 有人可以帮我吗?

谢谢

PS ::我的仓库:

public interface MRPRepository extends CrudRepository<MRP,Long>{    
    @Query("SELECT m FROM MRP m WHERE QTD_SALDO_PROGRAMAR > 0 "
            + "AND FLAG_PLANEJADO = 0 AND FLAG_CANCELADO = 0"
            + "AND FLAG_ATENDIDO=0" )
    List<MRP> select();

}

2 个答案:

答案 0 :(得分:0)

您可以在运行测试时设置模拟器数据库,例如h2数据库。

答案 1 :(得分:0)

如果我正确理解您的问题,您可以使用 RestAssured 进行 http 测试。

Response response = RestAssured.given()
            .baseUri("http://localhost:8080")
            .get("/mrp/banco");

    response.then().statusCode(200);
    List<MRP> mrps = Arrays.asList(response.as(MRP[].class));
    // assert anything you want