gpt4 book ai didi

grails - 在我的 Spock 测试中无法获取主体 ID

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

我有一个这样的 Controller :

@Secured(['ROLE_USER','IS_AUTHENTICATED_FULLY'])
def userprofile(){
def user = User.get(springSecurityService.principal.id)
params.id = user.id
redirect (action : "show", params:params)
}

我想在spock中测试 Controller 上面的 Controller ,所以我写了这样的测试代码:
def 'userProfile test'() {

setup:
mockDomain(User,[new User(username:"amtoasd",password:"blahblah")])

when:
controller.userprofile()

then:
response.redirectUrl == "/user/show/1"
}

当我运行测试时,此测试失败并显示以下错误消息:
java.lang.NullPointerException: Cannot get property 'principal' on null object
at mnm.schedule.UserController.userprofile(UserController.groovy:33)

在集成测试的情况下:
class UserSpec extends IntegrationSpec {

def springSecurityService

def 'userProfile test'() {

setup:
def userInstance = new User(username:"antoaravinth",password:"secrets").save()
def userInstance2 = new User(username:"antoaravinthas",password:"secrets").save()
def usercontroller = new UserController()
usercontroller.springSecurityService = springSecurityService

when:
usercontroller.userprofile()

then:
response.redirectUrl == "/user/sho"
}

}

我也得到同样的错误。

什么地方出了错?

提前致谢。

最佳答案

您似乎没有做任何事情来提供真实或模拟 springSecurityService ,所以它当然是空的(单元测试中没有依赖注入(inject);您必须模拟单元测试类未提供的所有内容)。将此添加到 setup:应该管用:

controller.springSecurityService = [principal: [id: 42]]

关于grails - 在我的 Spock 测试中无法获取主体 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9848974/

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