मैं एक परीक्षण है:वसंत MVC नियंत्रक के साथ परीक्षण के बाद विधि अनुप्रेषित
@Test
public void shouldAddCompany() throws Exception {
mockMvc.perform(post("/companies")
.param("name", "companyName"))
.andExpect(model().attribute("company",
hasProperty("name", is("companyName"))));
}
और मेरे नियंत्रक विधि की तरह दिखता है:
@PostMapping("/companies")
public String displayCompaniesPost(@ModelAttribute Company company) {
companyService.save(company);
return "redirect:/companies";
}
कैसे मैं परीक्षा में कंपनी विशेषता देख सकते हैं? रीडायरेक्ट और स्थिति 302.
java.lang.AssertionError: Model attribute 'company'
Expected: hasProperty("name", is "companyName")
but: was null
मैं इसे इसलिए होती है क्योंकि नियंत्रक अनुप्रेषण के कारण विधि होने वाली है लगता है की वजह से एक समस्या है। जब मैं इस पुनर्निर्देशन को हटा देता हूं तो सबकुछ ठीक है, लेकिन मैं उस पुनर्निर्देशन को हटाना नहीं चाहता हूं।
संपादित करें (GetMapping):
@GetMapping({"/", "/companies"})
public String displayCompanies(Model model) {
model.addAttribute("company", new Company());
List<Company> companies = companyService.findAll();
model.addAttribute("companies", companies);
return "companies";
}
मैंने सोचा था कि समस्या क्योंकि getMapping में एक ही नाम के साथ विशेषता addding की है, लेकिन जब मैं इसे हटा दिया, यह अभी भी काम नहीं करता।
क्या आप हमें दिखा सकते हैं कि जिस पथ को आप रीडायरेक्ट कर रहे हैं उसके लिए नियंत्रक विधि भी दिखती है ('@GetMapping ("/Companies ")')? – Ben
@ बेन ठीक है, मैंने पहली पोस्ट संपादित की है। मैंने सोचा कि समस्या getMapping में एक ही नाम के साथ addding विशेषता के कारण है, लेकिन जब मैंने इसे हटा दिया, यह अभी भी काम नहीं करता है। :( – Helosze
आपकी परीक्षा से कंपनी की विशेषता "कंपनी नाम" नाम की उम्मीद है, लेकिन जीईटी में आप एक नई 'कंपनी' जोड़ रहे हैं जो मुझे लगता है कि इसका कोई नाम नहीं है। आपका परीक्षण शायद 'कंपनियों की तलाश में होना चाहिए 'जैसा कि नियंत्रक विधि द्वारा लौटाई गई विशेषता है जिसे आप रीडायरेक्ट कर रहे हैं। – Ben