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
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