2016-03-04 126 views
0

我使用的grails 2.3.7 ..在斯波克單元測試即時嘲笑一個findWhere方法..Grails的斯波克單元測試查詢

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 ..

回答

0

通過這個代碼,你嘲諷(或者說加)方法

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

但您服務您所呼叫

DocumentHeader findWhere(Map props) 

試着改變你的元類:

DocumentHeader.metaClass.static.findWhere = {Map props -> 
    println "Running mock findWhere .. " 
    new DefaultDocument() 
} 
+0

是的..謝謝..沒有意識到,它把地圖作爲參數.. – user3914455