Скажем, что у меня есть 2 общедоступных метода:
func didSelect(data: Data) {
// do something
self.view.showText(textForData(data))
}
func didDismiss(data: Data) {
if data.isSomething {
self.view.showText(textForData(data))
}
...
}
private func textForData(data: Data): String {
var text: String
if data.distance == nil {
text = "..."
} else if data.distance < 1000 {
text = "\(data.distance) m"
} else {
text = "\(data.distance / 1000) km"
}
return text
}
Оба они зависят от логики форматирования textForData
.
textForData
имеет (с этой минимизированной реализацией) 3 возможных случая.
Если я проверю все возможные случаи для обеих моих публичных функций, у меня будет 6 методов тестирования, и 3 из них также будут тестировать ту же логику, которая уже была проверена другими 3.
Каков правильный способ тестирования этого?
Ps.: Я мог бы написать отдельный тест для textForData
, а в тестах для общедоступных методов я утверждаю, что вызывается textForData
, но, похоже, нарушает инкапсуляцию моего класса, и я не хочу чтобы сделать testForData
общедоступным.
Я также не хотел бы создавать отдельный класс только для моей логики textForData
, потому что в конечном итоге создаю слишком много зависимостей для этого текущего класса, и эта логика, похоже, не подходит нигде, кроме этого класса.