Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes: #2796
An alternative approach is available in #2807.
Add an optional method to
VarargMatcher
, which implementations can choose to override to return the type of object the matcher is matching.This is used by
MatcherApplicationStrategy
to determine if the type of matcher used to match a vararg parameter is of a type compatible with the vararg parameter.Where a vararg compatible matcher is found, the matcher is used to match the raw parameters.
Known limitations
The main limitation I'm aware of, is not a new limitation. It is that it is not possible to assert only a single parameter is passed to the vararg parameter, when using a
VarargMatcher
. (ref: #1593). For example:There is no current way to do this. This is because in the following intuitive mocking:
... matches zero or more vararg parameters, as the
any()
method is usingVarargMatcher
.It seems to me that
VarargMatcher
is... a little broken. This PR leveragesVarargMatcher
... which, if its broken, might not be something we want to do.Checklist
including project members to get a better picture of the change
commit is meaningful and help the people that will explore a change in 2 years
Fixes #<issue number>
in the description if relevantFixes #<issue number>
if relevant