Tôi có mã sau trong một trong các bộ điều khiển của mình:
@Controller
@RequestMapping("/preference")
public class PreferenceController {
@RequestMapping(method = RequestMethod.GET, produces = "text/html")
public String preference() {
return "preference";
}
}
Tôi chỉ đang thử kiểm tra nó bằng cách sử dụng thử nghiệm Spring MVC như sau:
@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());
}
}
Tôi nhận được ngoại lệ sau:
Đường dẫn dạng xem hình tròn [tùy chọn]: sẽ gửi lại URL trình xử lý hiện tại [/ tùy chọn] một lần nữa. Kiểm tra thiết lập ViewResolver của bạn! (Gợi ý: Đây có thể là kết quả của một chế độ xem không xác định, do việc tạo tên chế độ xem mặc định.)
Điều tôi thấy lạ là nó hoạt động tốt khi tôi tải cấu hình ngữ cảnh "đầy đủ" bao gồm các trình phân giải mẫu và chế độ xem như được hiển thị bên dưới:
<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>
Tôi biết rõ rằng tiền tố do trình phân giải mẫu thêm vào đảm bảo rằng không có "đường dẫn chế độ xem hình tròn" khi ứng dụng sử dụng trình phân giải mẫu này.
Nhưng sau đó làm cách nào để kiểm tra ứng dụng của mình bằng cách sử dụng thử nghiệm Spring MVC?
@RestController
thay vì@Controller
ViewResolver
bạn sử dụng khi nó bị lỗi không?