मेरे नियंत्रकों में मेरा निम्नलिखित कोड है:
@Controller
@RequestMapping("/preference")
public class PreferenceController {
@RequestMapping(method = RequestMethod.GET, produces = "text/html")
public String preference() {
return "preference";
}
}
मैं बस स्प्रिंग एमवीसी टेस्ट का उपयोग करके इसका परीक्षण करने की कोशिश कर रहा हूं :
@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>
मुझे अच्छी तरह पता है कि टेम्पलेट रिज़ॉल्वर द्वारा जोड़ा गया उपसर्ग यह सुनिश्चित करता है कि जब ऐप इस टेम्पलेट रिज़ॉल्वर का उपयोग करता है तो "परिपत्र दृश्य पथ" नहीं है।
लेकिन फिर मुझे स्प्रिंग एमवीसी टेस्ट का उपयोग करके अपने ऐप का परीक्षण कैसे करना चाहिए?
@RestController
इसके बजाय का उपयोग करें@Controller
ViewResolver
उपयोग कर सकते हैं पोस्ट जब यह विफल हो रहा है?