Допустим, есть функция, определяющая, должна ли кнопка быть видимой.
fun isButtonVisible(fitlers: List<Filters>, results: List<Shop>, isLoading: Boolean) {
return fitlers.isNotEmpty() && results.isEmpty() && !isLoading
}
Теперь я хотел бы протестировать эту функцию с помощью PBT, например:
"the button should be visible if filters is not empty and results is empty and is not loading" {
forAll { filters: List<Filters>, results: List<Shop>, isLoading: Boolean ->
val actual = isButtonVisible(filters, results, isLoading)
// Here reimplement the logic
val expected = filters.isNotEmpty() && results.isEmpty() && !isLoading
assertThat(actual).isEqual(expected)
}
}
Кажется, я просто снова реализую логику в своем тесте, это правильно? Если нет, как я могу придумать другие свойства, если логика состоит из простых комбинаций нескольких флагов?
assertThat(actual).isEqual(true)
если это должно быть правдой. - person CodingYoshi   schedule 02.06.2019