我们认为这Spring Rest Doc
对于记录 rest api 非常有用。但它是基于Spring MVC Test
,我们无法弄清楚如何Spring MVC Test
在我的 grails 应用程序中使用(Grails 3.0.5)。
我尝试使用配置类(使用@Configuration
and @ComponentScan
)将 grails 组件扫描到测试上下文中,但似乎没有加载任何内容(当对 执行 http 请求时mockmvc
,它得到 404)。
我还尝试直接配置 grails 控制器,但出现运行时错误。
无法自动装配字段:私有 reactor.bus.EventBus
我还尝试@Integration
在测试类上添加(来自 grails),但收到了同样的错误。
请帮忙。
以下是一些代码示例。我尝试将配置类或类位置或 grails 控制器添加到下面测试类的 ContextConfiguration 中。并且测试类本身基本上遵循spring rest doc
参考。
import org.junit.Before;
import org.junit.Rule;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.restdocs.RestDocumentation;
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration;
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration
//TODO how to scan Grails components into the test context
public class QuestionRestSpec {
@Rule
public final RestDocumentation restDocumentation = new RestDocumentation("build/generated-snippets");
@Autowired
private WebApplicationContext context;
private MockMvc mockMvc;
@Before
public void setUp() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(context)
.apply(documentationConfiguration(this.restDocumentation))
.build();
}
}
配置类(没有用):
@Configuration
@EnableWebMvc
@ComponentScan
public class AskConfig {
}