如何模拟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) 我无法解决问题。任何帮助表示赞赏,谢谢...
已邀请:
这些行对我来说没有意义:
authService.demand.userDomain().customerid { -> return 111}
authService.demand.userDomain().userid { -> return 222}
尝试这样的事情:
authService.demand.getUserDomain(2..2) { -> return [customerid:111, userid: 222] }

要回复问题请先登录注册