簡體   English   中英

如何在Grails單元測試類中動態模擬域?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM