[英]How to dynamically mock domains in Grails unit test classes?
在Grails 3.x中編寫單元測試時,我們必須模擬域。 這是示例代碼。
package com.example.service
import grails.test.mixin.Mock
import grails.test.mixin.TestFor
import spock.lang.Ignore
import spock.lang.Specification
@TestFor(SomeService)
@Mock([DomainA, DomainB])
class SomeServiceSpec extends Specification{
...
}
問題是添加新域時,假設DomainC且單元測試依賴於DomainC,則這些單元測試將失敗。 然后,我們必須手動添加DomainC。
有沒有一種方法可以動態模擬域?
@TestFor(SomeService)
@Mock([dynamically mock all domain objects here])
class SomeServiceSpec extends Specification{
...
}
也許這就是您需要的(來自grails doc )。
或者,您也可以直接將DomainClassUnitTestMixin與TestMixin批注一起使用,然后在測試過程中調用mockDomain方法來模擬域:
@TestFor(BookController)
@TestMixin(DomainClassUnitTestMixin)
class BookControllerSpec extends Specification {
void setupSpec() {
mockDomain(Book)
}
...
域列表也存在mockDomains
域方法,您可以通過標准方式從上下文中檢索域。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.