В одном из моих контроллеров есть следующий код:
@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());
}
}
У меня следующее исключение:
Путь кругового просмотра [предпочтение]: отправит обратно на текущий 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?
ViewResolver
, который вы используете, когда он терпит неудачу? - person Sotirios Delimanolis   schedule 15.09.2013@RestController
вместо@Controller
- person MozenRath   schedule 21.03.2020