spring-projects / spring-projects/spring-framework
Allow setting up a MockMVC form submission using an instance of the form-backing object
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 60.2k
- Forks
- 38.8k
- Avg merge
- 5d 2h
- Merged PRs (30d)
- 27
Description
To bind data submitted through HTML forms, a form-backing object is used as parameter of MVC controller methods.
@Controller
class MyController {
@PostMapping
String submit(@Valid @ModelAttribute MyForm form, Errors errors) {
}
}
class MyForm {
// properties go here
}
In a MockMVC integration test, to issue a request submitting that form, currently one would have to use the ….param(…) methods to populate the request body as plain Strings, also making sure that e.g. the same formatting ruled are used as are for binding and form value rendering. Also, one has to replicate property names as Strings for the keys handed into the ….param(…) method, which is not refactoring-friendly.
I would appreciate it, if instead, one could just call post(…).form(myFormBackingInstance) so that one could just populate the object and get the values added as requests parameters in matching format and also get the content type configured accordingly.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the MockMvc request-builder entry points, especially post(...) and the existing param(...) methods. Then trace how Spring MVC formats form values and configures content types. Done means a form-backing instance can produce matching request parameters and content type, with tests covering the new behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java, spring
- Domain
- api, backend, testing
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100