In ContentResultMatchersDsl, the functions that accept a Matcher don't allow matchers for supertypes of the checked type. This causes code like
mockMvc
.get("/books/{bookId}/blurb", BOOK_ID)
.andExpect { status { isOk() } }
.andExpect { content { string(hasLength(145)) } }
to not compile, since hasLength is a Matcher<CharSequence> and string wants a Matcher<String>. The original method does accept a Matcher<? super String>; in this case, changing the string method to accept a Matcher<in String> would also solve this compilation error.
The other functions that accept a matcher (node and source) exhibit the same problem.
Comment From: dmitrysulman
I've opened a PR for fixing this: #34542.