Custom Asserts For ModelAndView

This blog posts present some custom assertions written for Spring MVC ModelAndView class to make the tests more readable.

Some time ago I fell in love with all kind of DSLs including builders and custom asserts. Recently when browsing through some tests I discovered few dozens of lines like this:

assertThat(mav.getModelMap().get("transaction")).isEqualTo(pt);

where mav is of the ModelAndView class.
Because I'm alergic to so-called "train wrecks" (x.y.get() etc.) I scratched my head wondering if I can do something about it. The number of such assertions legitimates (at least in my opinion) some effort in order to improve them.

And so I spent 30 minutes of my lifetime hacking a custom assert (using FEST Fluent Assertions) which would allow to make these assertions a little bit more readable. The code is on github, see https://github.com/tomekkaczanowski/varia/tree/master/custom_fest_assert... And yes, you can use it in your code and I won't sue you, I promise.

Basically what it allows is to change this:

assertThat(mav.getModelMap().get("transaction")).isEqualTo(pt);

into this:

assertThat(mav).contains("transaction", pt);

(see Examples on github - there is some more stuff there)

If you do not like it you could easily change it into something like:

assertThat(mav).contains(pt).underKey("transaction");

or whatever your taste dictates you.

Happy coding!

Please comment using