У меня есть ситуация в контроллере, где я окружаю фрагменты кода в блоках if(Environment.Current == Environment.PRODUCTION)
, потому что блок кода вызывает methodA
в restService
, что делает вызов REST только для URL-адреса когда приложение развертывается на конкретном производственном сервере. Однако это означает, что область кода недостижима при выполнении тестов, что делает меня немного неудобным.Grails inject Service in Controller в зависимости от среды
В условиях развития я не озабочен сделать вызов methodA
, как я гася что methodA
бы вернуться и передать его к следующему контроллеру, поэтому изменение, если заявление if(Environment.Current != Environment.DEVELOPMENT)
позволяет мне проверить код лучше и не нужно совершать звонки в места, недоступные во время dev.
В идеале, хотя я хотел бы попробовать и ввести Сервис в контроллер, зависящий от окружения grails; так что я мог бы иметь две услуги, как это:
class RestService {
def methodA() {
// go do a REST call
}
}
и
class FakeRestService() {
def methodA() {
// return some stubbed response
}
}
и в моем контроллере restService
будет экземпляром FakeRestService
в средах разработки и тестирования, а экземпляр RestService
в ПРОИЗВОДСТВЕ
class SearchController {
def restService
def index() {
restService.methodA()
}
Я немного озадачен тем, как я мог достичь этого в стиле «Грайли»/Весна. Я занимаюсь созданием какой-либо службы Factory, которая вернет экземпляр либо RestService
, либо FakeRestService
в зависимости от среды, но было бы неплохо, если бы я мог определить, какую услугу вводить в restService
в config или что-то подобное.
Любые советы были бы замечательными!
Великий элегантное решение этой проблемы. Благодаря!! – SteWoo