我遇到了会话和集成测试的问题。这是我试过的。 我有一个名为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查询的部分。
拜托,有人可以给我一个建议,因为我不知道该怎么办。 谢谢。
答案 0 :(得分:0)
我问这些因为它返回了一个Null Pointer Exception。