2014-02-18 3 views
1

Я выполняю простой тест, но тест завершился неудачно, потому что не смог добавить сервисный компонент в класс тестирования. Ниже мой тестовый классНевозможно ввести класс службы в тесте grails unit-Test Fails

class QuoteServiceTests extends GrailsUnitTestCase { 

     def quoteService 
    void testStaticQuote() { 
     def staticQuote = quoteService.getStaticQuote() 

     assertEquals("Messi", staticQuote.author) 
     assertEquals("Watch me today against Man-City", staticQuote.content) 
    } 
} 

мой тест терпит неудачу с следующее сообщение об ошибке

Cannot invoke method getStaticQuote() on null object 
java.lang.NullPointerException: Cannot invoke method getStaticQuote() on null object 
at qotd.QuoteServiceTests.testStaticQuote(QuoteServiceTests.groovy:9) 
+1

Какая версия Grails? – dmahapatro

+0

Версия Grails - 1.3.5 –

ответ

3

Предполагая, что вы используете версию перед 2 (и JUnit вместо Спока), вам нужно вручную добавить службу:

class QuoteServiceTests extends GrailsUnitTestCase { 
    def quoteService 

    void setUp() { 
     quoteService = new QuoteService() 
    } 

    void testStaticQuote() { 
     def staticQuote = quoteService.getStaticQuote() 
     // ... 

Если вы используете Grails 2 или более поздней версии, то вам нужно аннотацию:

@TestFor(QuoteService) // Allows you to call the QuoteService via 'service' 
class QuoteServiceTests { 
    void testStaticQuote() { 
     def staticQuote = service.getStaticQuote() 
     // ... 
+0

, но это не зависимость от инъекций ...? Я имею в виду для версии <2 –

+0

@ProgrammerKhan Нет, это не так. Вам нужна инъекция зависимости? Вы можете сделать что-то вроде: https://stackoverflow.com/questions/12302880/inject-services-in-grails-unit-test, но я предпочитаю подход выше, как если бы вам нужно было изменить QuoteService (то есть насмехаться над зависимыми службами) он получает сброс перед каждым испытанием. Хотя, я думаю, я не знаю, делает ли инъекция зависимости слишком или нет. – Igor

+0

Хорошо спасибо @ Снежный, BTW Я не мог понять пример в ссылке https://stackoverflow.com/questions/12302880/inject-services-in-grails-unit-test%E2%80%8C%E2% 80% 8B вы можете объяснить это, пожалуйста? –

Смежные вопросы