Groovy Documentation

groovy.mock.interceptor
[Groovy] Class StubFor

java.lang.Object
  groovy.mock.interceptor.StubFor

class StubFor

StubFor supports (typically unit) testing of classes in isolation by allowing a loosely-ordered expectation of the behavior of collaborators to be defined. A typical test scenario involves a class under test (CUT) and one or more collaborators. In such a scenario it is often desirable to just test the business logic of the CUT. One strategy for doing that is to replace the collaborator instances with simplified stub objects to help isolate out the logic in the CUT. StubFor allows such stubs to be created using meta-programming. The desired behavior of collaborators is defined as a behavior specification. The behavior can be checked by the user using verify(). With StubFor, a stub's expectation is sequence independent and use of verify() is left to the user. Typical usage is as follows:

 import groovy.mock.interceptor.StubFor

 class Person {
   String first, last
 }

 class Family {
   Person mother, father
   def nameOfFather() { "$father.first $father.last" }
 }

 def stub = new StubFor(Person)
 stub.demand.with {
   getLast{ 'name' }
   getFirst{ 'dummy' }
 }
 stub.use {
   def john = new Person(first:'John', last:'Smith')
   def f = new Family(father:john)
   assert f.nameOfFather() == 'dummy name'
 }
 stub.expect.verify()
 
Here, Family is our class under test and Person is the collaborator. We are using normal Groovy property semantics here; hence the statement father.first causes a call to father.getFirst() to occur. For a complete list of features, see: MockFor.
Authors:
Dierk Koenig
Paul King


Property Summary
java.lang.Class clazz

Demand demand

java.lang.Object expect

Ignore ignore

java.util.Map instanceExpectations

MockProxyMetaClass proxy

 
Constructor Summary
StubFor(java.lang.Class clazz, boolean interceptConstruction = false)

 
Method Summary
java.lang.Object ignore(java.lang.Object filter, Closure filterBehavior = null)

Allows particular method calls to be ignored and not treated as part of the required behavior specification.

GroovyObject makeProxyInstance(java.lang.Object args, boolean isDelegate)

GroovyObject proxyDelegateInstance(java.lang.Object args = null)

Allows a more traditional instance-style stubbing paradigm.

GroovyObject proxyInstance(java.lang.Object args = null)

Allows a more traditional instance-style stubbing paradigm.

void use(Closure closure)

@See MockFor#use(Closure)

void use(GroovyObject obj, Closure closure)

void verify(GroovyObject obj)

For manual verification

void verify()

Convenience method

 
Methods inherited from class java.lang.Object
java.lang.Object#wait(long, int), java.lang.Object#wait(long), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll()
 

Property Detail

clazz

java.lang.Class clazz


demand

Demand demand


expect

java.lang.Object expect


ignore

Ignore ignore


instanceExpectations

java.util.Map instanceExpectations


proxy

MockProxyMetaClass proxy


 
Constructor Detail

StubFor

StubFor(java.lang.Class clazz, boolean interceptConstruction = false)


 
Method Detail

ignore

java.lang.Object ignore(java.lang.Object filter, Closure filterBehavior = null)
Allows particular method calls to be ignored and not treated as part of the required behavior specification. If you don't specify a return closure the method call will fall through to the underlying instance, i.e. half-mock style. The filter object is invoked using the normal Groovy isCase() semantics.
See:
MockFor#ignore(Object, Closure)


makeProxyInstance

GroovyObject makeProxyInstance(java.lang.Object args, boolean isDelegate)


proxyDelegateInstance

GroovyObject proxyDelegateInstance(java.lang.Object args = null)
Allows a more traditional instance-style stubbing paradigm. This is the recommended method to call to use the instance-style with Java classes.
See:
MockFor#proxyDelegateInstance(Object)


proxyInstance

GroovyObject proxyInstance(java.lang.Object args = null)
Allows a more traditional instance-style stubbing paradigm. This is the recommended method to call to use the instance-style with Groovy classes.
See:
MockFor#proxyInstance(Object)


use

void use(Closure closure)
See:
MockFor#use(Closure)


use

void use(GroovyObject obj, Closure closure)


verify

void verify(GroovyObject obj)
For manual verification


verify

void verify()
Convenience method


 

Groovy Documentation