2012-09-06 41 views
10

Tôi biết rằng bạn chỉ có thể tiêm một dịch vụ trong phương pháp kiểm tra đơn vị sử dụng:Dịch vụ Tiêm trong Grails Unit Test

defineBeans { 
    someService(SomeService) 
} 

Nhưng khi tôi cần phải tiêm dịch vụ bên trong một dịch vụ (dịch vụ someService tự gọi mình một dịch vụ khác some2Service). Khi tôi chạy thử nghiệm với mã ở trên, tôi nhận được:

Message: Cannot invoke method someMethod() on null object 

Có thể đưa dịch vụ vào dịch vụ trong thử nghiệm đơn vị không?

Cảm ơn. ;-)

Trả lời

9

Để sử dụng đậu mùa xuân trong một thử nghiệm đơn vị bạn cần phải làm như sau:

  • Bao gồm tất cả các dịch vụ và các loại đậu khác mà thử nghiệm tùy thuộc vào việc đóng cửa defineBeans.
  • Đặt thuộc tính autowire thành true cho các hạt cà phê cần phải có hạt đậu khác được tiêm.

Ví dụ:

defineBeans { 
    someService(SomeService) { bean -> 
     bean.autowire = true 
    } 
    some2Service(Some2Service) 
} 
+0

này có được hỗ trợ trong Grails 2.24 không? –

+0

hoạt động trong Grails 2.3.9 – jerryb

0

bạn có thể đặt biến thành viên của bạn mà là dịch vụ bằng cách sử dụng ref

MyService(MyProvider) { 
     userDetailsService = ref("userDetailsService") 
     springSecurityService = ref("springSecurityService") 
     userService = ref("userService") 
    } 

Hy vọng rằng sẽ giúp

+0

là nó được hỗ trợ trong phiên bản 2.2.4 Grails? –

+0

Có chứ ... Tôi đã sử dụng phiên bản 1.3.6 – allthenutsandbolts

Các vấn đề liên quan