所以,我正在尝试测试以下Grails服务实现:
class BookService {
def searchBooks(String search) {
if (!search) {
return []
}
Book.searchBooks(search)
}
}
它使用Book域类中定义的方法:
class Book {
String title
static def searchBooks(String search) {
Book.findByTitleLike(search)
}
}
所以,这是我一直在尝试的测试代码:
@TestFor(BookService)
@Mock(Book)
class BookServiceSpec extends Specification {
void "should search books"() {
setup:
new Book(title: 'The Stand').save()
new Book(title: 'Under the Dome').save()
new Book(title: 'Bag of Bones').save()
when:
service.searchBooks('ones')
then:
1 * Book.searchBooks()
}
}
但是,它始终失败:
Too few invocations for:
1 * Book.searchBooks() (0 invocations)
我已经调试了在IDE中运行的代码,并且该方法似乎确实已执行,但Spock没有注册执行。
我错过了什么? 我还需要做些什么来模拟域类方法吗?