У мене в одному з контролерів є такий код:
@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?
@RestController
замість@Controller
ViewResolver
використання, яке не використовується?