|
Groovy Documentation | |||||||
FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | PROPERTY | CONSTR | METHOD | DETAIL: FIELD | PROPERTY | CONSTR | METHOD |
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.
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 |
---|
java.lang.Class clazz
Demand demand
java.lang.Object expect
Ignore ignore
java.util.Map instanceExpectations
MockProxyMetaClass proxy
Constructor Detail |
---|
StubFor(java.lang.Class clazz, boolean interceptConstruction = false)
Method Detail |
---|
java.lang.Object ignore(java.lang.Object filter, Closure filterBehavior = null)
filter
object is invoked using the normal Groovy isCase()
semantics.
GroovyObject makeProxyInstance(java.lang.Object args, boolean isDelegate)
GroovyObject proxyDelegateInstance(java.lang.Object args = null)
GroovyObject proxyInstance(java.lang.Object args = null)
void use(Closure closure)
void use(GroovyObject obj, Closure closure)
void verify(GroovyObject obj)
void verify()
Groovy Documentation