Como evitar a exceção "Caminho de visão circular" com o teste Spring MVC
Eu tenho o seguinte código em um dos meus controladores:
@Controller
@RequestMapping("/preference")
public class PreferenceController {
@RequestMapping(method = RequestMethod.GET, produces = "text/html")
public String preference() {
return "preference";
}
}
Eu estou simplesmente tentando testá-lo usandoTeste de mola MVC do seguinte modo:
@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());
}
}
Eu estou recebendo a seguinte exceção:
Caminho de visualização circular [preferência]: voltaria ao URL do manipulador atual [/ preference] novamente. Verifique sua configuração ViewResolver! (Dica: Isso pode ser o resultado de uma visualização não especificada, devido à geração de nome de exibição padrão.)
O que eu acho estranho é quefunciona bem quando eu carrego a configuração de contexto "completo" que inclui o modelo e os resolvedores de visualização, conforme mostrado abaixo:
<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>
Estou ciente de que o prefixo adicionado pelo resolvedor de modelo garante que não haja "caminho de exibição circular" quando o aplicativo usa esse resolvedor de modelo.
Mas então, como devo testar meu aplicativo usando o teste Spring MVC? Alguém tem alguma pista?