Grails集成测试和会话注入

时间:2016-10-26 13:08:58

标签: session grails groovy integration-testing

我遇到了会话和集成测试的问题。这是我试过的。 我有一个名为ShoppingCartWebshopService的服务,它有方法" createNewShoppableItem"。这个方法从PriceService调用两个方法,并且存在问题。

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 for class:org.hibernate.impl.SessionImpl"

使用第二个版本我得到:java.lang.NullPointerException:"无法获取属性' currentSession'在null对象"在PriceService中我调用会话执行sql查询的部分。

拜托,有人可以给我一个建议,因为我不知道该怎么办。 谢谢。

1 个答案:

答案 0 :(得分:0)

  • sessionFactory_lookup是服务/自动连接类吗?
  • 如果它的自动连线是在您的resources.groovy / place中预设的 你声明所有不是服务的bean吗?

我问这些因为它返回了一个Null Pointer Exception。