То, что они имели в виду, это поместить расширение в файл с тестируемым классом. Так что если у вас есть что-то вроде:
class ToBeTested {
private(set) var bool: Bool
}
Вы можете добавить внутренний сеттер:
extension ToBeTested {
func setBoolTrue() { bool = true }
}
Но это должно быть в одном файле с ToBeTested
. Если вы не можете изменить этот файл, это не решаемая проблема. Если это нужно проверить таким образом, то класс должен быть спроектирован так, чтобы это разрешалось.
Когда свойство помечено private(set)
, компилятор может предположить, что значение не может быть изменено каким-либо образом за пределами этого файла. Это позволяет ему применять оптимизации, которые могут быть недопустимыми, если свойство можно изменить за пределами этого файла. «Метод установки» может даже не существовать, если компилятор определит, что он ему не нужен. Например, он может полностью включить эту операцию или полностью исключить ее, если сможет доказать, что значение никогда не изменяется.