Как динамически моделировать домены в классах модульного тестирования Grails? - PullRequest
0 голосов
/ 14 ноября 2018

При написании модульных тестов в 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{
   ...
}

1 Ответ

0 голосов
/ 15 ноября 2018

Может быть, это то, что вам нужно (из grails doc ).

В качестве альтернативы вы также можете использовать DomainClassUnitTestMixin напрямую с аннотацией TestMixin, а затем вызвать метод mockDomain для макетадомены во время теста:

@TestFor(BookController)
@TestMixin(DomainClassUnitTestMixin)
class BookControllerSpec extends Specification {

    void setupSpec() {
         mockDomain(Book)
    }
...

Также существует метод mockDomains для списка доменов, который вы можете получить стандартным способом из контекста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...