Это метод класса обслуживания моего Грааля:
<code>class SomeService {<br>
def authenticateService<br>
def getUserName() {
def cid = authenticateService.userDomain().customerid
def uid = authenticateService.userDomain().userid
def userDetails = User.findByCustomerIdAndUserId(cid, uid)<br>
return userDetails.lastName+", "+userDetails.firstName
}
Как создать макет для сервиса authenticateService, предоставляемого модулем безопасности acegi для модульного тестирования?
Я попробовал юнит-тест как:
<code>
class SomeServiceTests extends GrailsUnitTestCase {
...
...
def testGetUserName() {
def service = new SomeService()<br>
def authService = mockFor(AuthenticateService)
authService.demand.userDomain().customerid { -> return 111}
authService.demand.userDomain().userid { -> return 222}
service.authenticateService = authService.createMock()<br>
def uName = service.getUserName()<br>
asserNotNull uName
}
Но,
Когда я запускаю тесты, это дает:
Testsuite: SomeServiceTests
Выполнено тестов: 1, сбоев: 0, ошибок: 1, прошедшее время: 1,069 с
Вызвал ОШИБКУ
0
java.lang.ArrayIndexOutOfBoundsException: 0
at grails.test.DemandProxy.invokeMethod (GrailsMock.groovy: 171)
at SomeServiceTests.testGetUserName (SomeServiceTests.groovy: 230)
Я не могу решить проблему. Любая помощь приветствуется, спасибо ...