Saya memiliki kode berikut di salah satu pengontrol saya:
@Controller
@RequestMapping("/preference")
public class PreferenceController {
@RequestMapping(method = RequestMethod.GET, produces = "text/html")
public String preference() {
return "preference";
}
}
Saya hanya mencoba mengujinya menggunakan tes Spring MVC sebagai berikut:
@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());
}
}
Saya mendapatkan pengecualian berikut:
Jalur tampilan melingkar [preferensi]: akan mengirimkan kembali ke URL penangan saat ini [/ preferensi] lagi. Periksa penyiapan ViewResolver Anda! (Petunjuk: Ini mungkin hasil dari tampilan yang tidak ditentukan, karena pembuatan nama tampilan default.)
Yang saya anggap aneh adalah bahwa ini berfungsi dengan baik ketika saya memuat konfigurasi konteks "lengkap" yang menyertakan template dan resolver tampilan seperti yang ditunjukkan di bawah ini:
<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>
Saya sangat menyadari bahwa awalan yang ditambahkan oleh pemecah templat memastikan bahwa tidak ada "jalur tampilan melingkar" saat aplikasi menggunakan pemecah templat ini.
Tapi kemudian bagaimana saya bisa menguji aplikasi saya menggunakan tes Spring MVC?
@RestController
sebagai pengganti@Controller
ViewResolver
Anda gunakan saat gagal?