Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Groovy & Grails > Тестирование сервиs класса


Автор: ShurikA 1.10.2013, 11:21
Привет всем!

Давно тут не был... 

Начал я играться с Grails, и главным образом с тестами. И я не совсем понимаю логику.

Есть следующий сервис класс:
Код

package imagery

import grails.transaction.Transactional

@Transactional
class MediaPersistanceService {

    def method() {
        return "test string"
    }
}


И тест к нему:
Код

package imagery

import grails.test.mixin.TestFor
import grails.test.mixin.services.ServiceUnitTestMixin

/**
 * See the API for {@link grails.test.mixin.services.ServiceUnitTestMixin} for usage instructions
 */
@TestFor(MediaPersistanceService)
class MediaPersistanceServiceTests{

    def setup() {
        
    }

    def cleanup() {
    }

    public void testMethod() {
        //service = new MediaPersistanceService()
        
        System.out.print("In Test")
        
        assert service.method() == "test string"
    }
}


если внимательно прочесть доки, то там есть следующее:
Цитата

The TestFor annotation defines the class under test and will automatically create a field for the type of class under test. For example in the above case a "controller" field will be present, however if TestFor was defined for a service a "service" field would be created and so on.


И так оно и есть, в объекте тест класса создаются поле "service", но оно NULL. Вроде как не страшно, можно создать прямо в тесте... Но если я создаю объект сервиса в тесте и приравниваю к тому самому полю "service" (закоментированная строка) то я получаю:
Код

 groovy.lang.ReadOnlyPropertyException: Cannot set readonly property: service for class: imagery.MediaPersistanceServiceTests


Что я упускаю? Мне казалось что если создаётся поле, то я могу с ним работать или же как и многи вещи в Grails, оно автоматом болжно получить тестируеммый объект.

Спасибо за совет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)