当前位置: 首页 > 知识库问答 >
问题:

使用lambda函数进行REST API调用的JUnit测试用例

谷梁星雨
2023-03-14

考虑一个内部使用lambda函数的RESTAPI调用方法,我们如何编写Junit测试用例。我自己尝试过,但未能模拟uri生成器,该生成器在POST API调用中表示为lambda函数。还有如何模拟flatMap中的块。下面给出了我尝试编写单元测试的代码片段。

public ResponseEntity<String> findEmployee(String empName, String empId) {
        
        response = employeeService.post.uri(builder -> builder.path(pathMapper.get("GET_PATH")).queryParam(EMP_ID, empId).build())
            .accept(APPLICATION.JSON)
            .syncBody(empName)
            .exchange()
            .flatMap( empResponse -> {
                LOGGER.info(empResponse.getStatusCode());
                return empResponse.toEntity(String.class);
            }).block();
            
            return response;
    }

在这里,雇员服务是一个WebClient对象。

共有1个答案

宗政霄
2023-03-14

朋友不让朋友嘲讽流畅的API。

lambda内嵌,因此无法单独测试。如果需要,则必须将其提取到可测试的方法调用中。

java prettyprint-override">  .flatMap( this::handleResponse )
  .block();
...
String handleResponse( Response empResponse ) {
  LOGGER.info(empResponse.getStatusCode());
  return empResponse.toEntity(String.class);
}

更一般地说,您可能希望查看像Wiremock这样的东西,它设置了一个本地Web服务器,您可以使用设置的测试响应来播种。

 类似资料:
  • 有没有任何一个测试REST API的使用硒网络驱动程序Maven TestNG。请分享信息或样本项目

  • ...还有一个很简单的测试... 如果我在IntelliJ中运行这个,测试就会运行并失败。 如果我提交这个项目并将其推送到github,TeamCity会看到变化并开始构建。生成会很快失败,出现以下错误:

  • 问题内容: 您如何在jUnit中编写数据驱动的测试? (我的定义)数据驱动测试是一种从某些外部源(文件,数据库等)读取数据,每行/文件/任何内容执行一个测试,并将结果显示在测试运行程序中的测试,就像您进行了单独的测试- 每次运行的结果将单独显示,而不是汇总显示。 问题答案: 在JUnit4中,您可以使用Parameterized testrunner进行数据驱动的测试。 它的文档记录不是很好,但是

  • 我有这个过滤器类,在使用junit进行测试时需要尽可能高的代码覆盖率。 和测试等级: 当我运行时,它在 线 我如何避免这种情况? 我需要调用这个方法并执行里面的任何内容来提供所需的代码覆盖。

  • 我正在使用Jenkins CI构建我的iOS项目。对于这个任务,我使用sh脚本通过运行xcodebuild直接从git repo构建二进制文件,这很好。目前,我使用eclipse中的appium运行JUnit测试来测试我的应用程序,但我也想将它们集成到Jenkins中。我找到了一些使用ant脚本将JUnit测试集成到jenkins中的教程,但我没有使用ant来构建我的项目。没有ant脚本,我如何将

  • 问题内容: 这是从这个问题开始的:要求我在哪里开始一个新的问题。 问题是我只是对JUnit 或有关的东西之类的东西还不够了解,无法用Jeff Bowman提到的方式解决问题。 问题答案: 在您以后的评论中,我指出了差距:您需要使用Mockito作为规则,而将参数化为Runner,而不是相反。 原因是Runner负责报告测试数量,而Parameterized则根据测试方法的数量和参数化输入的数量来操