如何模拟acegi身份验证服务进行单元测试?
|
这是我的grails服务类方法:
class SomeService {
def authenticateService
def getUserName() {
def cid = authenticateService.userDomain().customerid
def uid = authenticateService.userDomain().userid
def userDetails = User.findByCustomerIdAndUserId(cid, uid)
return userDetails.lastName+\", \"+userDetails.firstName
}
如何为acegi安全插件提供的authenticateService创建模拟,以进行单元测试?
我已经尝试过单元测试:
class SomeServiceTests extends GrailsUnitTestCase {
...
...
def testGetUserName() {
def service = new SomeService()
def authService = mockFor(AuthenticateService)
authService.demand.userDomain().customerid { -> return 111}
authService.demand.userDomain().userid { -> return 222}
service.authenticateService = authService.createMock()
def uName = service.getUserName()
asserNotNull uName
}
但,
当我运行测试时,它给出了:
测试套件:SomeServiceTests
运行测试:1,失败:0,错误:1,经过时间:1.069秒
导致错误
0
java.lang.ArrayIndexOutOfBoundsException:0
在grails.test.DemandProxy.invokeMethod(GrailsMock.groovy:171)
在SomeServiceTests.testGetUserName(SomeServiceTests.groovy:230)
我无法解决问题。任何帮助表示赞赏,谢谢...
没有找到相关结果
已邀请:
1 个回复
贡炮逗握惫
尝试这样的事情: