Я могу имитировать звонки на:
MyDomainClass.createCriteria().list{
eq('id',id)
eq('anotherParameter',anotherParameterId)
}
с помощью:
def myCriteria = [
list : {Closure cls -> returnThisObject}
]
MyDomainClass.metaClass.static.createCriteria = { myCriteria }
, как рекомендовано на:
http://davistechyinfo.blogspot.com/2010/01/mocking-hibernate-criteria-in-grails .html
, но для:
MyDomainClass.createCriteria().get{
eq('id',id)
eq('anotherParameter',anotherParameterId)
}
Этот подход не работает - может быть, потому, что 'get' является ключевым словом в отличие от 'list'. Кто-нибудь может посоветовать - возможность издеваться над этим в доменных классах должна быть возможна, без простого отказа от покрытия модульных тестов для методов, которые используют createCriteria (). Get {}
.
Предложения приветствуются,
Alex