Inject Services in Grails Unit Test
Я знаю, что вы можете просто ввести услугу в метод unit test, используя:
defineBeans {
someService(SomeService)
}
Но когда мне нужно внедрить сервис внутри службы (служба someService
вызывает себе другую службу some2Service
). Когда я запускаю тест с приведенным выше кодом, я получаю:
Message: Cannot invoke method someMethod() on null object
Можно ли внедрить услугу в службу в unit test?
Спасибо.; -)
Ответы
Ответ 1
Чтобы использовать spring beans в unit test, вам необходимо сделать следующее:
- Включите все службы и другие beans, в зависимости от того, в чем проблема с телом
defineBeans
.
- Задайте для свойства
autowire
значение true
для beans, для которого требуется добавить другой beans.
Например:
defineBeans {
someService(SomeService) { bean ->
bean.autowire = true
}
some2Service(Some2Service)
}
Ответ 2
вы можете установить свою переменную-член, которая является службой, используя ref
MyService(MyProvider) {
userDetailsService = ref("userDetailsService")
springSecurityService = ref("springSecurityService")
userService = ref("userService")
}
Надеюсь, что поможет