Matching Parameter Values

You can specify different actions to be performed when a method is invoked with different parameters:

allowing (calculator).add(1,1); will(returnValue(3));
allowing (calculator).add(2,2); will(returnValue(5));
allowing (calculator).sqrt(-1); will(throwException(new IllegalArgumentException());

You can specify that the same method can be invoked a different number of times with different parameters:

one   (calculator).load("x"); will(returnValue(10));
never (calculator).load("y");

Actual parameters match if they are equal to the expected parameters. For most values, equality is determined by the equals method. Null values are checked beforehand, so it is safe to pass null as an expected or actual parameter value. Arrays are treated as a special case and compared recursively: two arrays are considered equal if they are the same size and all their elements are considered equal. If you want to ignore parameters or match parameter values in a different way, you will need to define matchers1 for each parameter of the expectation.

Links:

1. matchers: http://www.jmock.org/matchers.html