это являются аннотированные методы в контроллере:метод тестирования @ModelAttribute на контроллере
@RequestMapping(method = RequestMethod.GET)
public String getClient(@PathVariable("contractUuid") UUID contractUuid, Model model) {
ClientDto clientDto = new ClientDto();
clientDto.setContractUuid(contractUuid);
model.addAttribute("client", clientDto);
return "addClient";
}
@ModelAttribute("contract")
public ContractDto getContract(@PathVariable("contractUuid") UUID contractUuid) throws ContractNotFoundException {
return contractService.fromEntity(contractService.findByUuid(contractUuid));
}
Метод испытания, что я пытаюсь показано ниже, но она не для атрибута контракта. Атрибут клиент добавлен в Модель в @RequestMapping метод.
private MockMvc mockMvc;
@Autowired
private ContractService contractServiceMock;
@Autowired
private ClientService clientServiceMock;
@Autowired
protected WebApplicationContext wac;
@Before
public void setup() {
Mockito.reset(contractServiceMock);
Mockito.reset(clientServiceMock);
this.mockMvc = webAppContextSetup(this.wac).build();
}
@Test
public void test() throws Exception {
UUID uuid = UUID.randomUUID();
Contract contract = new Contract(uuid);
when(contractServiceMock.findByUuid(uuid)).thenReturn(contract);
mockMvc.perform(get("/addClient/{contractUuid}", uuid))
.andExpect(status().isOk())
.andExpect(view().name("addClient"))
.andExpect(forwardedUrl("/WEB-INF/pages/addClient.jsp"))
.andExpect(model().attributeExists("client"))
.andExpect(model().attributeExists("contract"));
}
контракт атрибут показывает на странице JSP при запуске приложения, поскольку я использую некоторые из его атрибутов, но так как он не в методе испытаний есть другой способ, чтобы проверить это? Это терпит неудачу с сообщением:
java.lang.AssertionError: Model attribute 'contract' does not exist
Весна 4.0.1.RELEASE
Вы также можете опубликовать метод @RequestMapping? –
Вы тестируете addClient, показываете, что – NimChimpsky
@NimChimpsky вы хотите, чтобы я показал тестовый класс для addCLient? – amb