Ich habe den folgenden Code in einem meiner Controller:
@Controller
@RequestMapping("/preference")
public class PreferenceController {
@RequestMapping(method = RequestMethod.GET, produces = "text/html")
public String preference() {
return "preference";
}
}
Ich versuche einfach, es mit dem Spring MVC-Test wie folgt zu testen :
@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());
}
}
Ich erhalte die folgende Ausnahme:
Kreisansichtspfad [Präferenz]: würde erneut an die aktuelle Handler-URL [/ Präferenz] zurücksenden. Überprüfen Sie Ihr ViewResolver-Setup! (Hinweis: Dies kann das Ergebnis einer nicht angegebenen Ansicht sein, da der Name der Standardansicht generiert wurde.)
Was ich seltsam finde, ist, dass es gut funktioniert, wenn ich die "vollständige" Kontextkonfiguration lade , die die Vorlage und die Ansichtsauflöser enthält, wie unten gezeigt:
<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>
Mir ist klar, dass das vom Vorlagen-Resolver hinzugefügte Präfix sicherstellt, dass es keinen "kreisförmigen Ansichtspfad" gibt, wenn die App diesen Vorlagen-Resolver verwendet.
Aber wie soll ich dann meine App mit dem Spring MVC-Test testen?
@RestController
anstelle von@Controller
ViewResolver
Sie verwenden, posten , wenn es fehlschlägt?