У меня есть Grails 2.4.4 и Cobertura в качестве скрытого теста.У меня есть этот код для тестирования:
def viewMailTemplates(){
User user = User.findByEmail(springSecurityService.authentication.principal)
def token = user.activationToken
def urlActivacion = request.getScheme() + '://' + request.getServerName() +":"+ request.getServerPort() + createLink(controller: "user", action: "activation", params: [token: token])
def srcImage = request.getScheme() + '://' + request.getServerName() +":"+ request.getServerPort()+ "/assets/logoOlu.jpg"
render(view: 'mailTemplates/_activationES', model: [srcImage: srcImage, urlActivacion: urlActivacion])
}
И у меня есть этот тест:
@TestMixin(GrailsUnitTestMixin)
@TestFor( UserController )
@Mock([UserController, User])
class UserControllerSpec extends Specification {
void "Test the viewMailTemplates action returns the correct model"() {
when: "The viewMailTemplates action is executed"
controller.viewMailTemplates()
then: "The model is correct"
status == 405
}
Но проблема в том, что тестовый режим не может получить доступ к базе данных и пройти этот тест, потому что springSecurityService= null
Если я сделаю что-то вроде «User.get (1)», это приведет к нулю, даже если у меня есть этот пользователь, и программа (в разработке) отлично работает с базой данных в localhost с Mysql
Как я могу пройти этот тест?Как создать новый сервис SpringSecurityService для этого теста?