2015-10-19 3 views
0

Я обновляю приложение grails с 2.4.3 до 3.0.8. Существует множество интеграционных тестов, которые используют grails.util.GrailsWebUtil.bindMockWebRequest(grailsApplication.mainContext), следующих по вызову controller.method. Но я обнаружил, что grails.util.GrailsWebUtil больше не содержит метода bindMockWebRequest, похоже, что он был заменен на grails.util.GrailsWebMockUtil, но все сервисы, объявленные в контроллере, не вводятся в класс. Я мог бы использовать grails.test.spock.IntegrationSpec, но этот класс также был удален из grails3. Существует suggestion для использования функциональных тестов для тестирования интеграции контроллеров, но это решение не работает для меня, я не хочу выполнять все эти тесты как функциональные или вручную вводить зависимости в экземпляры контроллера, как я могу его исправить ?тест интеграции контроллеров grails3: услуги не вводятся

+0

'ConfigurableApplicationContext ctx = (ConfigurableApplicationContext) grailsApplication.getMainContext(); ctx.getBeanFactory(). AutowireBeanProperties (контроллер, AutowireCapableBeanFactory.AUTOWIRE_BY_NAME, false); '- может быть решением – airfox

+0

Вот полный пример того, как писать интеграционные тесты для контроллера с grails 3 http://nimavat.me/blog/grails3-контроллер интеграция тест-пример –

ответ

0

Использование grails.test.mixin.integration.Integration аннотация вместо grails.test.spock.IntegrationSpec расширение класса.

И переместите интеграционные тесты на src/integration-test/groovy.

0

Я модернизируюсь от Grails 2.5.1 до 3.2.4. Один из моих интеграционных тестов не смог найти службу, которую я ввел с помощью def xxxService. Я включил службу в список @Mock. XxxServiceIntegrationSpec расширяет спецификацию.

Я знаю, что это не совсем относится к тестовым контроллерам, но, возможно, это помогает?

0

У нас были дозоны интеграции контроллеров в нашем старом приложении grails 2.x. Когда мы перешли на grails 3, мы хотели сохранить его, не могли их бросить и писать функциональные тесты с нуля.

Здесь я писал о его Integration testing controllers with Grails 3

Основные шаги - настройка макета запроса и ответа - установить имя текущего контроллера - остальное фиктивный запрос и ответ в конце теста

See вышеупомянутое сообщение в блоге для полного примера.

Надеюсь, это поможет.

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