Using the GMock Library I have updated my unit tests to mock out the create criteria methods the following way:
void testSomeFunction() {
def results = []
def mockCriteria = mock() {
list(instanceOf(Closure)).returns(results)
}
mock(Book).static.createCriteria().returns(mockCriteria)
play {
assertEquals null, bookService.getDefaultBook(null)
}
}
You need to add the following to the top of the unit test file with the import statements:
import org.gmock.*
import static org.hamcrest.Matchers.*
@WithGMock
Also add the following to your BuildConfig.groovy:
dependencies {
test "org.gmock:gmock:0.8.0"
test "org.hamcrest:hamcrest-all:1.0"
}
I learned this from the following blog post: http://adhockery.blogspot.com/2010/01/using-gmock-to-complement-grails.html