2016-10-26 6 views
0

У меня возникла проблема с тестом на сеанс и интеграцию. Вот что я пробовал. У меня есть служба под названием 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-запроса.

Пожалуйста, может кто-нибудь дать мне совет, потому что я не знаю, что попробовать. Спасибо.

ответ

0
  • Является ли SessionFactory_lookup услугой/проводным способом?
  • Если его автоустановка установлена ​​в ваших ресурсах.groovy/place, где вы заявляете все свои бобы, которые не являются сервисами?

Я прошу об этом, так как он возвращает Исключение нулевого указателя.

+0

SessionFactory_lookup нет в ресурсах.groovy или других местах в моем приложении. Я искал в google, но информации немного. Возможно, это звучит странно, но для этого компонента нет определения. Я использую IntelliJ и нет значка bean рядом с "def sessionFactory_lookup". Тем не менее он работает нормально для выполнения SQL-процедур. – pep

+0

Я нашел эту статью, где упоминается sessionFactory_lookup. http://totalprogus.blogspot.hr/2015/03/upgrade-grails-244-to-250.html Речь идет о модернизации Grails до более высокой версии. – pep

+0

Не могли бы вы попытаться изменить def sessionFactory_lookup на sessionFactory в PriceService? –

Смежные вопросы