在我将spring框架升级到6.0.1后,autowear mockmvc在控制器测试中为空

omhiaaxx  于 2023-01-25  发布在  Spring
关注(0)|答案(1)|浏览(243)

使用:Spring启动版本为3.0.1Spring框架版本6.0.1 Java版本17
在我升级了Spring框架版本之后,我将安全配置重构为

@WebMvcTest(NominationController.class)
@AutoConfigureMockMvc
class NominationIsolationTest extends Specification {

  @Autowired
  MockMvc mockMvc

  ...

  def "should return status created with response when post nominations given valid nomination"() {
    given:
    ...

    when:
    def response = mockMvc")
                    .content(body).contentType(MediaType.APPLICATION_JSON))

    then:
    ...
  }

但是它失败了,我调试发现mockMvc的值为null,我使用spock来做控制器测试
我尝试添加@SpringBootTest注解,但不起作用
升级之前,控制器测试可以成功运行

ffx8fchx

ffx8fchx1#

现在我修正了这个问题,通过在测试类上添加@ContextConfiguration注解,并自动连接WebApplicationContext,然后使用mvcbuilder创建mockmvc,之后,它修正了

@WebMvcTest
@ContextConfiguration
class IsolationTest extends Specification {

  @Autowired
  WebApplicationContext wac

  MockMvc mockMvc

  def setup() {
    this.mockMvc = MockMvcBuilders.webAppContextSetup(wac).build()
  }

相关问题