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

如何使用jUnit测试@RestController的@RequestBody?

段干华皓
2023-03-14

我想为我的一个@RestController编写一个简单的测试,并断言输入@RequestBody已正确映射到PersonDTO

@RestController
public class PersonServlet {
    @PostMapping("/person") 
    public PersonRsp find(@RequestBody PersonDTO dto) {
        //business logic
    }
}

public class PersonDTO {
    private String firstname, lastname;
}

问题:如何向该servlet发送JSON请求正文。然后再检查一下PersonDTO字段是否都设置正确?

这可能与此类似,但我不知道如何检查/监视已解析的DTO?

@RunWith(SpringRunner.class)
@WebMvcTest(PersonSerlvet.class)
public class PersonTests {
    @Autowired
    private MockMvc mvc;

    @Test
    public void testExample() throws Exception {
        this.mvc.perform(get("/person"))
                .andExpect(status().isOk());
    }
}

@重复标记:这不是链接问题(关于如何读取响应正文字符串)的重复。我实际上是在要求进行身体测试。

共有1个答案

孟德曜
2023-03-14

测试Json到DTO的反序列化并不是你的控制器真正的责任,你将测试底层对象映射器,它是一个外部库(Jackson,Gson….??)

不确定正在使用哪个库,但如果您想测试它的使用情况,您需要以与应用程序框架类似的方式手动构造适当的对象映射器,并使用其api从Json字符串序列化到目标DTO

 类似资料:
  • 问题内容: 目前,我有以下 build.gradle 文件: 这 的build.gradle 文件是我的仓库 在这里 。我所有的主文件都在 src / model /中 ,它们各自的测试在 test / model中 。 如何正确添加JUnit 4 依赖项 ,然后在 测试/模型 文件夹中运行那些测试? 问题答案: 如何正确添加junit 4依赖关系? 假设您要针对标准Maven(或等效版本)存储库

  • 当前我有以下build.gradle文件: 此build.gradle文件用于我的存储库。我的所有主文件都在src/model/中,它们各自的测试都在test/model中。

  • 问题内容: 您如何测试使用JUnit触发异步流程的方法? 我不知道如何让我的测试等待过程结束(这不完全是单元测试,它更像是集成测试,因为它涉及多个类,而不仅仅是一个类)。 问题答案: 恕我直言,让单元测试创​​建或在线程上等待是不好的做法。您希望这些测试能在几秒钟内运行。这就是为什么我想提出一种分两步的方法来测试异步过程。 测试您的异步过程是否已正确提交。您可以模拟接受异步请求的对象,并确保提交的

  • 以下是我使用的文件: 组成部分xml 服务我mpl.java est.java 错误:

  • 我使用JUnit实现了一些单元和集成测试,如下图所示(这些测试都在同一个类中) 我正试图在詹金斯建立一个管道,为此我在gradle中添加了这个任务。生成(没有筛选器,因为我想运行所有测试) 在我的Jenkins管道中,我添加了这个阶段“测试”。我需要在后台添加什么来运行测试?

  • 我需要测试验证注释,但看起来它们不起作用。我不确定JUnit是否也是正确的。目前,测试将通过,但您可以看到指定的电子邮件地址是错误的。 JUnit 待测试类别