The groovy.mock.interceptor is an all-groovy mock testing library.
- An ordinary Groovy or Java class that's instance or class methods
are to be called. Calling them can be time consuming or produce side effects that
are unwanted when testing (e.g. database operations).
- A Groovy Object that calls methods on the Collaborator, i.e.
collaborates with it.
- An object that can be used to augment the Collaborator.
Method calls to the Collaborator will be handled by the Mock, showing a demanded
behavior. Method calls are expected to occur strictly in the demanded
sequence with a given range of cardinality. The use of a Mock implicitly
ends with verifying the expectations.
- Much like a Mock but the expectation about sequences of method calls on the Collaborator is
loose, i.e. calls may occur out of the demanded order as long as the ranges
of cardinality are met. The use of a Stub does not end with an implicit
verification since the stubbing effect is typically asserted on the Caller.
An explicit call to verify can be issued to assert all demanded method call
have been effected with the specified cardinality.
- typical mock style of failing early
- mocks instance and class methods
- mocks final methods and final Collaborators
- mocks Groovy and Java Collaborators (but Caller must be groovy)
- can mock all objects of a given class (or a single Groovy object)
- mocks even if Collaborator cannot be injected into the Caller
- mocks even if Collaborator is not accessible on the Caller (no getter)
- demanded calls specified via recording calls on the Demand object (EasyMock style).
- cardinality specified as Ranges, default is 1..1; 'optional' can be achieved with 0..1
- behavior specified via Closures, allowing static or calculated return values, throwing exceptions,
asserting argument values, etc. (even tricky sequence constraints
by sharing state in the testMethod scope between the behavior Closures)
- matching parameter list specified via Closure's parameter list, supporting
typed or untyped params, default params, and varargs.
- not dependent on any external mock library
For an extensive list of usages see the unit tests in this package.
||The object that registers method calls on it for the use with Mocks and Stubs.
||Helper object to support convenience "ignore.methodName" notation similar to demand notation.
||Expects demanded call cardinalities to match demanded ranges.
||MockFor supports (typically unit) testing of classes in isolation by allowing
a strictly ordered expectation of the behavior of collaborators to be defined.
||Intercepting calls to the collaborating object and notify the expectation object.
||The ProxyMetaClass for the MockInterceptor.
||Expects demanded call cardinalities to match demanded ranges in the sequence of recording.
||StubFor supports (typically unit) testing of classes in isolation by allowing
a loosely-ordered expectation of the behavior of collaborators to be defined.