MockMvc

2022-10-28 14:53:08 浏览数 (1)

反驳和奉承,两者都会造成不愉快的交谈——歌德

有时候我们想针对springcontroller进行单元测试,可以使用MockMvc来进行

文档地址:https://docs.spring.io/spring-framework/docs/current/reference/html/testing.html#spring-mvc-test-server

如果是springboot,文档:https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.testing.spring-boot-applications

这里提到需要加上@AutoConfigureMockMvc注解

在这个文档里提到要使用MockMvc,先静态导入这四个类

然后按照这里的例子,依葫芦画瓢写一个,但是不一样的是,我这里返回的数据是json,因此按照这里的文档稍加修改

最终结果:

代码语言:javascript复制
package com.ruben.simpleboot

import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.http.MediaType
import org.springframework.test.web.servlet.MockMvc
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.*

@SpringBootTest
@AutoConfigureMockMvc
class UserControllerTest {

    @Test
    fun testPage(@Autowired mockMvc: MockMvc) {
        mockMvc.perform(get("/user/page"))
            .andExpect(status().isOk)
            .andExpect(content().contentType(MediaType.APPLICATION_JSON))
            .andExpect(jsonPath("$.records").isArray)
            .andExpect(jsonPath("$.records[0].id").value(1L))
    }

}

忘说了我这里是kotlin,不过java的话都一样的哈哈

0 人点赞