Я пытаюсь написать Spring MVC Tests для тестирования контроллеров Spring. В настоящее время, если я хотел проверить метод контроллера с этой подписью:Spring Test MVC: Как использовать объект в качестве параметров запроса
@RequestMapping(value = "/new/save", method = RequestMethod.POST)
@Transactional
public String postGateway(@Valid GatewayForm gatewayForm, BindingResult bindingResult, RedirectAttributes flash, Model model)
Я хотел бы использовать MockMVC таким образом, чтобы заполнить параметр объекта GatewayForm:
mvc.perform(
post("/new/save")
.sessionAttr("account", account)
.param("serialNumber", "SN1QRTY334V")
.param("branchId", "1")
.param("model", "1")
.param("templateId", "1")
Проблема в том, что я могу только установите значения String/primitive на объект GatewayForm, используя метод .param (String, String).
Таким образом, существуют переменные экземпляра объекта на GatewayForm выше, которые я не могу установить. Я видел других людей вместо столбца JSON объекта, но это потребовало бы изменения реализации методов контроллера для использования «application/json», который я не хочу делать.
Может ли кто-нибудь посоветовать?
Вы не должны передавать объект своему контроллеру в тесте интеграции http://stackoverflow.com/a/17143677/1935341 –
Во-вторых, что. Это плохая практика. – horatius
Хорошо, мне кажется, я должен попробовать этот метод postForm() вместо post(). Позвольте мне попробовать именно это –