В настоящее время я использую junit5, wiremock и restassured для своих интеграционных тестов. Каратэ выглядит очень многообещающим, но я немного борюсь с настройкой тестов, управляемых данными, так как мне нужно подготовить вложенные структуры данных, которые в текущей настройке выглядят следующим образом:
abstract class StationRequests(val stations: Collection<String>): ArgumentsProvider {
override fun provideArguments(context: ExtensionContext): java.util.stream.Stream<out Arguments>{
val now = LocalDateTime.now()
val samples = mutableListOf<Arguments>()
stations.forEach { station ->
Subscription.values().forEach { subscription ->
listOf(
*Device.values(),
null
).forEach { device ->
Stream.Protocol.values().forEach { protocol ->
listOf(
null,
now.minusMinutes(5),
now.minusHours(2),
now.minusDays(1)
).forEach { startTime ->
samples.add(
Arguments.of(
subscription, device, station, protocol, startTime
)
)
}
}
}
}
}
return java.util.stream.Stream.of(*samples.toTypedArray())
}
}
Is есть ли какой-либо предпочтительный способ настройки таких вложенных структур данных с карате? Первоначально я думал об определении 5 разных массивов с примерами значений для подписки, устройства, станции, протокола и startTime, а также их объединения и объединения в один массив, который будет использоваться в разделе Examples:
.
Мне пока это не удалось, и мне интересно, есть ли лучший способ подготовить такие вложенные тесты, основанные на данных?