что не правильно.
вам не нужно рассчитывать ожидаемое значение во время теста, вы должны знать, каким должен быть результат, установить его как таковое и сравнить его с фактическим результатом.
Тесты работают, вызывая метод, который вы хотите протестировать, и сравнивая результат с уже известным, ожидаемым значением.
"the button should be visible when filters are not empty, results is empty, isLoading is false " {
forAll { filters: List<Filters>, results: List<Shop>, isLoading: Boolean ->
val actualVisibleFlag = isButtonVisible(filters, results, isLoading)
val expectedVisibleFlag = true
assertThat(actualVisibleFlag ).isEqual(expectedVisibleFlag )
}
}
Ваше ожидаемое значение известно, это то, что я пытаюсь сделать.
Для каждой комбинации входов вы создаете новый тест.
Идея заключается в том, что когда у вас есть ошибка, вы можете легко увидеть, какой из существующих тестов не пройден, или вы можете добавить новый, который подчеркивает ошибку.
Если вы вызываете метод, чтобы дать вам результат того, что, по вашему мнению, вы должны получить, ну, как вы узнаете, что метод в любом случае верен? Как вы знаете, это работает правильно для каждой комбинации?
Возможно, вам не хватит меньшего количества тестов, если вы сократите количество флагов, возможно, вам действительно нужно 4 из них?
Теперь, каждый язык / фреймворк имеет (или должен иметь) поддержку матричного типа вещей, чтобы вы могли легко записывать значения для каждой комбинации