gpt4 book ai didi

unit-testing - 如何将 springSecurityService 注入(inject) Grails 域类以在 Grails 2.4.2 中进行 Controller 单元测试

转载 作者:行者123 更新时间:2023-12-02 15:56:39 24 4
gpt4 key购买 nike

我如何在 Grails 域类中注入(inject) springSecurityService 在单元测试 Controller 时,以下是示例代码,我不断收到错误 can not get encodePassword on null Object 和 getPrincipal();

 //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"
}

}

最佳答案

Grails 2.x 支持使用'defineBeans' 闭包为测试环境定义spring bean。它支持 Controller 等中的依赖注入(inject),我不确定它是否也适用于域对象。从理论上讲,它应该在域对象/ Controller /服务之间保持一致

这篇文章可以帮助你

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

关于unit-testing - 如何将 springSecurityService 注入(inject) Grails 域类以在 Grails 2.4.2 中进行 Controller 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33453920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com