Как обойти спок? Поставщик данных - пустая ошибка
У меня есть 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
поля как обходной путь.
Смотрите здесь для примера.