Spring REST Docs使用静态配置类设置MockMvc

时间:2019-01-22 12:55:51

标签: spring spring-test mockmvc spring-test-mvc

Spring REST Docs参考指南使用自动连接的ApplicationContext来设置MockMvc:

@Before
public void setUp() {
    this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
        .apply(documentationConfiguration(this.restDocumentation))
        .alwaysDo(document("{method-name}/{step}/")).build();
}

this博客中描述了如何使用静态@Configuration类。 但是,使用此类静态类,自动装配上下文不是从此类创建的上下文。似乎此类被忽略了。

有没有办法将两者结合起来?

2 个答案:

答案 0 :(得分:0)

我已经更新了配置,并且现在可以按预期运行。

@ContextConfiguration
@RunWith(SpringRunner.class)
public class SpringTest {

  @Autowired
  private WebApplicationContext webApplicationContext;

  private MockMvc mockMvc;

  @Before
  public void setUp() {
    this.mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
  }

  ... test methods ...

  @Configuration
  @ComponentScan(basePackages = "my.package")
  @Import(SecurityConfiguration.class)
  public static class Config {

    @Bean
    @Qualifier("myService")
    ... replace implementation of myService with test implementation...
  }
}

现在,按预期使用从静态配置类创建的应用程序上下文来配置MockMvc。

答案 1 :(得分:0)

或者您可以只使用@AutoConfigureRestDocs