Как обойти спок? Поставщик данных - пустая ошибка

У меня есть SpringBootTest, который читает в свойствах из application.properties. Код установки использует @Value аннотация для установки значений соответственно. Одним из этих свойств является массив имен.

Я пытаюсь написать управляемый данными тест, используя Спока. Оператор where использует эти имена, которые инициализируются в настройке:

expect:
retrievedName == value
where:
value << getNames()

Это всегда терпит неудачу с org.spockframework.runtime.SpockExecutionException: Data provider is null, Похоже, что вызов getNames() вызывается до инициализации свойств в коде установки. Если я не использую оператор where (тестирование на основе данных), все работает нормально. Есть ли обходной путь для этого?

1 ответ

Вы не можете использовать данные, инициализированные в setup раздел в качестве источника для управляемых данными тестов. Согласно документам:

Хотя он объявлен последним, where Блок оценивается до запуска метода объекта, содержащего его.

Вы можете попробовать и использовать setupSpec() методы и @Shared поля как обходной путь.

Смотрите здесь для примера.

Другие вопросы по тегам