Я написал сервис, который читает переменную сеанса CAS ...
package cp
import edu.yale.its.tp.cas.client.filter.CASFilter
import javax.servlet.http.HttpSession
import org.springframework.web.context.request.RequestContextHolder
class AuthorizeService {
def username
def loginError
def permissions
def authCheck( String pageController, String pageAction ) {
username = getSession().getAttribute(CASFilter.CAS_FILTER_USER)
.....
Omitted the rest of this to save space.
.....
}
private HttpSession getSession() {
return RequestContextHolder.currentRequestAttributes().getSession()
}
Я не могу понять, как поместить что-то в сеанс в моем тесте, чтобы этот фрагмент кода работал.
Вот тест:
package cp
import grails.test.*
class AuthorizeServiceTests extends GroovyTestCase {
def AuthorizeService
protected void setUp() {
super.setUp()
}
protected void tearDown() {
super.tearDown()
}
void testAuthCheck() {
def isAuthorized
// No username in the session
isAuthorized = AuthorizeService.authCheck( 'welcome', 'index' )
assertEquals false, isAuthorized
// Mock the username to the rest of the tests work
mockSession["CASFilter.CAS_FILTER_USER"] = "testUser"
.....
Omitted the rest of this to save space.
.....
}
Когда я запускаю свой тест, я получаю сообщение об ошибке:
Нет такого свойства: mockSession для класса: cp.AuthorizeServiceTests groovy.lang.пытаясь найти способ внедрить что-то в mockSession или что-то подобное, чтобы я мог протестировать этот сервис.Я могу видеть, где было бы довольно легко проверить это, если бы это был контроллер, но кажется, что сервисы - это совсем другое животное.
В качестве фона я портирую работающее приложение PHP наGrails ... Я - парень из PHP, и это мой первый опыт работы с Grails, поэтому я прошу прощения, если это нубский вопрос.