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

Spring REST Docs setup MockMvc with static configuration class

Spring REST 文档参考指南使用自动装配设置 MockMvc ApplicationContext:

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

并且在 this 博客中描述了如何使用静态 @Configuration classes。 然而,使用这样一个静态 class 自动装配的上下文不是从这个 class 创建的上下文。似乎这个 class 被忽略了。

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

我已经更新了我的配置,它现在可以正常工作了。

@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 已按预期配置了从静态配置 class 创建的应用程序上下文。

或者您可以只使用@AutoConfigureRestDocs