У меня возникла проблема с тестом на сеанс и интеграцию. Вот что я пробовал. У меня есть служба под названием ShoppingCartWebshopService, и у нее есть метод createNewShoppableItem. Этот метод вызывает два метода от PriceService, и есть проблема.Тест интеграции интеграции Grails
Часть PriceService:
def sessionFactory_lookup
def getActionResult(){
final session = sessionFactory_lookup.currentSession.connection()
def conn = new Sql(session)
{query and rest of the code}
}
Часть ShoppingCartWebshopService:
def customerPriceDetails = priceService.getActionResult()
Моя интеграция тест:
class ShoppingCartWebshopServiceIntegrationSpec extends IntegrationSpec {
def shoppingCartWebshopService
def priceService
def sessionFactory
void "test something"() {
when:
//First version of session injection:
// ApplicationContext context = (ApplicationContext) ServletContextHolder.getServletContext().getAttribute(GrailsApplicationAttributes.APPLICATION_CONTEXT);
// SessionFactory sf = context.getBean('sessionFactory')
// Session session = sf.getCurrentSession()
shoppingCartWebshopService.priceService = priceService
shoppingCartWebshopService.priceService.getActionResult("003-65607758", "19")
//Second version of session injection:
def session = sessionFactory.getCurrentSession()
//
shoppingCartWebshopService.priceService.sessionFactory_lookup = session
def artikl = shoppingCartWebshopService.createNewShoppableItem("003-65607758", "19")
then:
artikl.size() > 0
}
}
Первая версия, которую я нашел здесь, но это не работает. Grails integration test and sessionFactory.currentSession
С первой версии я получаю свою ошибку: «groovy.lang.MissingPropertyException: Нет такого свойства: currentSession для класса: org.hibernate.impl.SessionImpl»
Со второй версии я получаю это: java.lang .NullPointerException: «Не удается получить свойство currentSession« на нулевом объекте »в части PriceService, где я вызываю сеанс для выполнения SQL-запроса.
Пожалуйста, может кто-нибудь дать мне совет, потому что я не знаю, что попробовать. Спасибо.
SessionFactory_lookup нет в ресурсах.groovy или других местах в моем приложении. Я искал в google, но информации немного. Возможно, это звучит странно, но для этого компонента нет определения. Я использую IntelliJ и нет значка bean рядом с "def sessionFactory_lookup". Тем не менее он работает нормально для выполнения SQL-процедур. – pep
Я нашел эту статью, где упоминается sessionFactory_lookup. http://totalprogus.blogspot.hr/2015/03/upgrade-grails-244-to-250.html Речь идет о модернизации Grails до более высокой версии. – pep
Не могли бы вы попытаться изменить def sessionFactory_lookup на sessionFactory в PriceService? –