Как и ожидалось, у меня обычно возникают трудности при слежении за TDD (т. Е. При написании тестов в первую очередь) со слоем представления.
А именно, для наблюдения или запуска определенных видимых изменений (макета или стиля) мне потребуетсясделать внутреннюю часть представления публичной.Это нарушает инкапсуляцию и позволяет клиентскому коду делать что-то вроде myView.label.text = "User"
.
Чтобы избежать этого, я либо добавляю методы получения в класс UIView
:
var userName: String{ return label.text }
, либо делаю некоторые расширения, которые добавляются только в среду тестирования:
extension MyView{
//avoids making a getter just for the sake of testing, while keeping it private and interchangeable
var userName : String{
return (viewWithTag(someLabelTage) as! UILabel).text
}
Другой подход - пропустить рабочий процесс TDD (т. Е. Выполнить тестирование вручную после выполнения функции) и добавить тестирование моментальных снимков (см. https://github.com/pointfreeco/swift-snapshot-testing) в увеличенном покрытии и иметь страховочную сетку при рефакторинге.
Учитывая все это, мне было интересно, есть ли какие-либо другие шаблоны или подходы, которые я могу использовать, чтобы быть более эффективными, сохраняя при этом свою уверенность в коде.