Вы можете использовать include
только на верхнем уровне. Это часть того, как реализуются заводские тесты (для чего используется ключевое слово include) (возможно, это будет смягчено в будущих версиях).
Однако вы можете переместить все это в фабрику.
class SellerTest : DescribeSpec({
include(emailValidation)
})
val emailValidation = describeSpec {
describe("Registration") {
context("Not existing user") {
forAll(
row("test.com"),
row("123123123123123")
) { email ->
assertSoftly {
val exception =
shouldThrow<ServiceException> { Email(email) }
}
}
}
}
}
И вы можете параметризовать присвоение имен всем, что захотите, поскольку это просто строки, например:
fun emailValidation(name: String) = describeSpec {
describe("Registration") {
context("$name") {
}
}
}
Если вы не параметризуете, то иметь тестовую фабрику бессмысленно. Просто объявите тестовый встроенный IMO.