Spring 单元测试中对 Json 字符串的响应对象

Spring Response Object to Json String in a Unit-Test

我有一个 spring 启动休息控制器,其中 returns 一个对象。像这样:

@RestController
@RequestMapping("books-rest")
public class SimpleBookRestController {
    
    @GetMapping("/{id}", produces = "application/json")
    public ResponseEntity<Book> getBook(@PathVariable int id) {
        return findBookById(id);
    }
 
    
}

我有一个单元测试来测试这个控制器方法(mockito 模拟内部的服务调用)。类似于:

@RunWith(MockitoJUnitRunner.Silent.class)
public class SimpleBookRestControllerTest {

    @Autowired
    @InjectMocks
    private SimpleBookRestController simpleBookRestController;
    @Mock
    private MyService myservice;

我现在想测试 spring 对反序列化为 JSON 字符串的对象到底做了什么。 在我的测试中,我只测试对象,这很好。 但是我现在有一个错误,我想在单元测试中看到 JSON 字符串。

你会怎么做?

您需要的不仅仅是简单的单元测试——SimpleBookRestController 不处理到 JSON 的转换,因此您不能只对它进行单元测试。

请参阅本指南:https://spring.io/guides/gs/testing-web/,或查找使用 @WebMvcTest 的示例,这是一种测试整个 Web 层的方法,包括 REST 调用及其响应。