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), java.lang.Object#wait(long, int), 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