Запрос модульного тестирования Grails spock

Я использую grails 2.3.7 .. в модульном тесте Spock я издеваюсь над методом findWhere ..

  DocumentHeader.metaClass.static.findWhere = {DocumentType type, String workStation, Boolean complete ->
            println "Running mock findWhere .. "
            new DefaultDocument()
        }

который я использую для имитации вызова метода в службе.

def returnDocument =  DocumentHeader.findWhere(documentType:DocumentType.DEFAULT_TYPE,
                        workStation: requirement.workstation,
                        complete: false)

Типы параметров правильные, но при запуске теста я получаю

Cannot query [com.sample.DocumentHeader] on non-existent property: workStation org.springframework.dao.InvalidDataAccessResourceUsageException: Cannot query [com.vantec.DocumentHeader] on non-existent property: workStation
at org.grails.datastore.mapping.simple.query.SimpleMapQuery

так что, похоже, вызывается реальный метод, а не макет .. У кого-нибудь есть идеи? Не помните, как раньше насмехались над запросом findWhere, чтобы кто-нибудь знал о каких-либо проблемах? TIA ..


person user3914455    schedule 04.03.2016    source источник


Ответы (1)


Этим кодом вы издеваетесь (а точнее добавляете) метод

DocumentHeader findWhere(DocumentType dt, String w, Boolean c)

Но в своей службе вы звоните

DocumentHeader findWhere(Map props)

Попробуйте изменить свой метакласс на:

DocumentHeader.metaClass.static.findWhere = {Map props ->
    println "Running mock findWhere .. "
    new DefaultDocument()
}
person droggo    schedule 04.03.2016