Как использовать инициализацию службы в контроллере во время модульного тестирования в Grails? - PullRequest
0 голосов
/ 30 марта 2020

Я начинаю с модульного тестирования в Grails 3.3.8 , у меня есть ControllerSpe c:

class FooControllerSpec extends Specification implements ControllerUnitTest<FooController> {

      void "test index"() {
        given:
        controller.fooService = new FooServiceImplementation()

        when:
        controller.index()

        then:
        response.json
        status == 200
      }

      void "test show"() {
        given:
        controller.fooService = new FooServiceImplementation()

        when:
        params['id'] = '000001400'
        controller.show()

        then:
        status == 200
      }
    }

FooService - это интерфейс, не имеющий реализации.

@Service(Foo)
interface FooService {
Foo get(Serializable id)

List<Foo> list(Map args)
}

Я создаю FooServiceImplementation так:

class FooServiceImplementation implements FooService {
 Foo get(Serializable id) {/*implementation here*/}

    List<Foo> list(Map args) {/*implementation here*/}
}

Это на самом деле работает, но есть и другое форма для инициализации службы в моем контроллере? Я хочу использовать FooService именно с той реализацией, которую grails будет компилировать при внедрении службы в контроллер, чтобы убедиться, что результаты во время выполнения будут такими же, как и во время тестирования, поскольку мой FooServiceImplementation может генерировать разные результаты, хотя Я полагаю, вы должны написать реализацию правильно.

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