當爲Grails 3中的某個類編寫單元測試時,我可以使用@TestFor
註釋來指定我想測試的類。在我的單元測試中,如果我的測試服務是一個控制器和一個字段「服務」,並且我可以使用這些字段作爲「測試中的系統」,那麼我有一個字段「控制器」。@TestFor在域單元測試中做了什麼?
我想知道什麼@TestFor
正在做一個域類的測試和它應該如何使用。我找不到處理這種情況的任何文檔。比方說,我有一個域「MYDOMAIN」,並啓動這樣一個測試「MyDomainSpec」:
@TestFor(MyDomain)
class MyDomainSpec extends Specification {
def setup() {
def doesntMatter = domain // just to check access to "domain"
最後一行已經給了我一個
org.codehaus.groovy.runtime.typehandling。 GroovyCastException:不能與類的java.lang.Class中的「投對象類MYDOMAIN'上課「MYDOMAIN」
這可能意味着Grails的嘗試使用表示MYDOMAIN類爲這個類的一個實例的對象。我想知道爲什麼會發生這種情況,代碼有什麼問題?我的意思是,domain
屬性存在,它確實是有原因的,不是嗎?我怎樣才能使用僅僅訪問它時拋出異常的屬性?
更新
顯然引發異常只有在域類中有一個字段String name
。我不知道這個領域應該如此特別。它可能只是一個錯誤?
這似乎是一個有用的文章。他們在域類上使用'@ TestFor' http://www.christianoestreich.com/2012/11/domain-constraints-grails-spock-updated/ – zero01alpha
@ zero01alpha這是一個有趣的閱讀本身,謝謝。但是關於TestFor,他們只提到它使得方法「mockForConstraintsTests」可用。 – Matthias