ฉันมีรหัสต่อไปนี้ในตัวควบคุมของฉัน:
@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
คุณใช้เมื่อมันล้มเหลวได้หรือไม่?