public class Equals extends Object implements ArgumentMatcher<Object>, ContainsExtraTypeInfo, Serializable
| Modifier and Type | Method and Description |
|---|---|
boolean |
equals(Object o) |
protected Object |
getWanted() |
int |
hashCode() |
boolean |
matches(Object actual)
Informs if this matcher accepts the given argument.
|
String |
toString() |
String |
toStringWithType()
Returns more verbose description of the object which include type information
|
boolean |
typeMatches(Object target)
Checks if target target has matching type.
|
public Equals(Object wanted)
public boolean matches(Object actual)
ArgumentMatcherThe method should never assert if the argument doesn't match. It should only return false.
The argument is not using the generic type in order to force explicit casting in the implementation.
This way it is easier to debug when incompatible arguments are passed to the matchers.
You have to trust us on this one. If we used parametrized type then ClassCastException
would be thrown in certain scenarios.
For example:
//test, method accepts Collection argument and ArgumentMatcher<List> is used
when(mock.useCollection(someListMatcher())).thenDoNothing();
//production code, yields confusing ClassCastException
//although Set extends Collection but is not compatible with ArgumentMatcher<List>
mock.useCollection(new HashSet());
See the example in the top level javadoc for ArgumentMatcher
matches in interface ArgumentMatcher<Object>actual - the argumentprotected final Object getWanted()
public String toStringWithType()
ContainsExtraTypeInfotoStringWithType in interface ContainsExtraTypeInfopublic boolean typeMatches(Object target)
ContainsExtraTypeInfoContainsExtraTypeInfo.toStringWithType()typeMatches in interface ContainsExtraTypeInfo