Witam,
dlaczego w klasie PhoneNumberControllerTest obiekt przekazywany w .content(new Gson().toJson(phoneNumberPL)))
jest null
em ?
Bean
@Bean(name = "PNCorrectPL")
@Profile("test")
public PhoneNumber CretePNCorrectPL() {
PhoneNumber phoneNumber = new PhoneNumber("1234567890");
phoneNumber.setRegion("PL");
return phoneNumber;
}
PhoneNumberControllerTest.java
@WebMvcTest(PhoneNumberController.class)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
class PhoneNumberControllerTest {
@Qualifier("PNCorrectPL")
@Autowired
PhoneNumber phoneNumberPL;
private PhoneNumberController phoneNumberController;
@BeforeAll
void init(){
this.phoneNumberService = new PhoneNumberService();
this.regionService = new RegionService();
this.phoneNumberController = new PhoneNumberController(phoneNumberService, regionService, phoneNumberPL);
}
@Test
void createModel() {
PhoneNumber result = phoneNumberController.createModel();
assertEquals(phoneNumberDefault, result);
}
@Test
void submitNumbers() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.post("/validate_phonenumber")
.contentType(MediaType.APPLICATION_JSON)
//.requestAttr("voivodeship", 10)
.content(new Gson().toJson(phoneNumberPL)))
.andExpect(model().attribute("phoneNumber", phoneNumberPL))
.andExpect(model().hasNoErrors())
.andExpect(view().name("/phonenumber_validated"))
.andExpect(status().isOk());
}}
PhoneNumberController.class
@Controller
public class PhoneNumberController {
@Qualifier("PNDefault")
@Autowired
PhoneNumber phoneNumber;
@Autowired
private final PhoneNumberService phoneNumberService;
private final RegionService regionService;
public PhoneNumberController(PhoneNumberService phoneNumberService, RegionService regionService, @Qualifier("PNDefault") PhoneNumber phoneNumber) {
this.phoneNumberService = phoneNumberService;
this.regionService = regionService;
this.phoneNumber = phoneNumber;
}
@ModelAttribute("phoneNumber")
public PhoneNumber createModel() {
return phoneNumber;
}
@PostMapping("/validate_phonenumber")
public String submitNumbers(@Valid @ModelAttribute("phoneNumber") PhoneNumber phoneNumber, BindingResult bindingResult) throws NumberParseException {
if (bindingResult.hasErrors()) {
System.out.println("There were errors");
bindingResult.getAllErrors().forEach(error -> {
System.out.println(error.getObjectName() + " " + error.getDefaultMessage());
});
return "phonenumber_form";
}
else {
phoneNumber.setCountry_code(phoneNumberService.getCountryCode(phoneNumber.getRegion()));
phoneNumberService.Validate(phoneNumber);
return "/phonenumber_validated";
}
}}