0

Как вставить SpringSecurityService в Grails Класс домена В то время как модульное тестирование Controller, Ниже приведен пример кода, я продолжаю получать ошибку, не могу получить encodePassword на null Объект и аналогично для getPrincipal();Как внедрить SpringSecurityService Into Grails Класс домена для тестирования модуля контроллера в Grails 2.4.2

//Controller class 
    class UserController{ 
    def save(){ 
     def user=new AppUser(params).save(); 
     render(user as JSON) 
     } 
    } 

    //Domain Class 
    class User{ 
    transient springSecurityService 
    String name 
    String address 
    String password 
    String createdBy 
    def beforeInsert(){ 
     password=springSecurityService.encodePassword(password); 
     def principal = springSecurityService.getPrincipal() 
    } 

//Controller Test 
@TestMixin(GrailsUnitTestMixin) 
@TestFor(UserController) 
class UserControllerSpec { 

    void setUp() { 
    } 
    void "test save"(){ 
    given: 
    params.name="A" 
    params.password="abc" 
    params.address="XYZ" 
    when: 
    controller.save(); 
    then: 
    response.status=="200" 
    } 

} 

ответ

0

Grails 2.x поддерживает определение весенних бобах для тестовых сред, используя закрытие «defineBeans». Он поддерживает инъекцию зависимостей в контроллерах и т. Д., Я не уверен, что он работает и для объектов домена. Теоретически это должно быть последовательно через доменные объекты/контроллеры/услуги

эта статья может помочь вам

http://www.block-consult.com/blog/2011/08/17/inject-spring-security-service-into-domain-class-for-controller-unit-testing/

+0

Я попытался это, но не работаю в Грааль 2.4.2, это, кажется, для более старой версии , –

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