2015-12-02 24 views
3

時,我有以下的Grails規格測試Grails的3集成測試拋出「無會話發現當前線程」休眠節能除了實體

@Integration 
@Rollback 
class WebAppointmentControllerSpec extends Specification { 


    Clinic clinic 
    Practitioner practitioner 
    Patient patient 
    User user; 
    Address address1 

    def setup() { 
     this.address1 = new Address(locality: 'Calgary', administrativeArea: 'Alberta', country: Country.findByCca2('CA'), postalCode: 'T1A1A1', addressLine1: "123 Tooth Street SW") 
     address1.save(failOnError: true) 
     this.clinic = new Clinic(name: 'Test Clinic 1', address: address1, primaryEmail: '[email protected]', primaryPhone: phone1, website: 'http://www.clinic1.com', timeZone: DateTimeZone.forID('America/Edmonton')) 
     clinic.save(failOnError: true) 
     this.practitioner = new Practitioner(admin: false, firstName: 'John', lastName: 'Smith', clinic: this.clinic, primaryTelephone: StringUtil.formatTelephoneNumber('1234567890')) 
     practitioner.save(failOnError: true) 
     user = new User(email: '[email protected]', passwordHash: BCryptUtil.hashpw('testtest', BCryptUtil.gensalt(10)), enabled: true, accountExpired: false, accountLocked: false, credentialsExpired: false, secretKey: new SecretKey(value: 'dRZbYLVN=yjBW17V09Bf'), emailVerified: true, acceptTermsAndConditions: true, acceptPrivacyTerms: true).save(failOnError: true) 
     this.patient = new Patient(user: user, firstName: 'User2', lastName: 'User2Last', primaryTelephone: '+14035551212', dateOfBirth: StringUtil.parseRegistrationDate("1979/02/02"), group: patientGroup, points: 200).save(failOnError: true) 
    } 

    def cleanup() { 
    } 


    void "Anonymous user cannot update appointment status"() { 
     given: 
      RestBuilder rest = new RestBuilder() 
      Appointment appointment = new Appointment(patient: this.patient, practitioner: this.practitioner, clinic: this.clinic, dateAndTime: LocalDateTime.parse('2015-03-15T10:00:00'), endDateAndTime: LocalDateTime.parse('2015-03-15T10:30:00'), lastUpdatedBy: this.practitioner) 
      appointment.save(failOnError: true) 
      appointment.save() 

     when: "The home page is visited" 
      RestResponse restResponse = rest.post("http://localhost:8080/api/v1/arrivals/$arrivalid/status"); 

     then: "A 401 error is sent" 
      restResponse.status == 401 
    } 
} 

當它運行時,我得到以下錯誤...

org.hibernate.HibernateException:無會話發現當前線程

at org.grails.orm.hibernate.GrailsSessionContext.currentSession(GrailsSessionContext.java:117) 
at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:1014) 
at org.grails.orm.hibernate.SessionFactoryProxy.getCurrentSession(SessionFactoryProxy.java:148) 
at org.grails.orm.hibernate.HibernateSession.createQuery(HibernateSession.java:154) 
at org.grails.orm.hibernate.HibernateSession.createQuery(HibernateSession.java:148) 
at org.grails.datastore.gorm.finders.AbstractFindByFinder.buildQuery(AbstractFindByFinder.java:39) 
at org.grails.datastore.gorm.finders.AbstractFindByFinder$1.doInSession(AbstractFindByFinder.java:24) 
at org.grails.datastore.mapping.core.DatastoreUtils.execute(DatastoreUtils.java:302) 
at org.grails.datastore.gorm.finders.AbstractFinder.execute(AbstractFinder.java:41) 
at org.grails.datastore.gorm.finders.AbstractFindByFinder.doInvokeInternal(AbstractFindByFinder.java:22) 
at org.grails.datastore.gorm.finders.DynamicFinder.invoke(DynamicFinder.java:156) 
at org.grails.datastore.gorm.finders.DynamicFinder.invoke(DynamicFinder.java:356) 
at org.grails.datastore.gorm.GormStaticApi.methodMissing(GormStaticApi.groovy:112) 
at org.grails.datastore.gorm.internal.StaticMethodInvokingClosure.call(StaticMethodInvokingClosure.groovy:32) 
at com.appreciado.server.api.WebAppointmentControllerSpec.setup(WebAppointmentControllerSpec.groovy:36) 

有一些方法可以讓我實現我的集成測試Hibernate會話?

回答