最佳答案
我的一个控制器中有以下代码:
@Controller
@RequestMapping("/preference")
public class PreferenceController {
@RequestMapping(method = RequestMethod.GET, produces = "text/html")
public String preference() {
return "preference";
}
}
我只是试图使用 弹簧 MVC 测试对它进行如下测试:
@ContextConfiguration
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
public class PreferenceControllerTest {
@Autowired
private WebApplicationContext ctx;
private MockMvc mockMvc;
@Before
public void setup() {
mockMvc = webAppContextSetup(ctx).build();
}
@Test
public void circularViewPathIssue() throws Exception {
mockMvc.perform(get("/preference"))
.andDo(print());
}
}
我得到了以下例外:
循环视图路径[首选项] : 将分派回当前 再次检查处理程序 URL [/首选项]。请检查您的 ViewResolver 设置! (提示: 由于默认视图,这可能是未指定视图的结果 名字的产生)
我觉得奇怪的是,当我加载“完整”上下文配置时,它工作得很好包括模板和视图解析器,如下所示:
<bean class="org.thymeleaf.templateresolver.ServletContextTemplateResolver" id="webTemplateResolver">
<property name="prefix" value="WEB-INF/web-templates/" />
<property name="suffix" value=".html" />
<property name="templateMode" value="HTML5" />
<property name="characterEncoding" value="UTF-8" />
<property name="order" value="2" />
<property name="cacheable" value="false" />
</bean>
我很清楚模板解析器添加的前缀确保了当应用程序使用这个模板解析器时不会出现“循环视图路径”。
但是我应该如何使用 Spring MVC 测试来测试我的应用程序呢?