Spring MVC测试中如何避免“圆形视图路径”异常

我的一个控制器中有以下代码:


@Controller

@RequestMapping("/preference")

public class PreferenceController {


    @RequestMapping(method = RequestMethod.GET, produces = "text/html")

    public String preference() {

        return "preference";

    }

}

我只是想使用Spring 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());

    }

}

我收到以下异常:


循环视图路径[preference]:将再次分派回当前处理程序URL [/ preference]。检查您的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测试来测试我的应用程序呢?有人知道吗?


MMTTMM
浏览 877回答 3
3回答

宝慕林4294392

我通过使用@ResponseBody解决了这个问题,如下所示:@RequestMapping(value = "/resturl", method = RequestMethod.GET, produces = {"application/json"})&nbsp; &nbsp; @ResponseStatus(HttpStatus.OK)&nbsp; &nbsp; @Transactional(value = "jpaTransactionManager")&nbsp; &nbsp; public @ResponseBody List<DomainObject> findByResourceID(@PathParam("resourceID") String resourceID) {
打开App,查看更多内容
随时随地看视频慕课网APP