正如预期的那样,在使用视图层遵循 TDD(即首先编写测试)时,我通常会遇到困难。
也就是说,为了观察或触发某些可见的更改(布局或样式),我需要公开视图的内部结构。这打破了封装并允许客户端代码执行诸如myView.label.text = "User".
为了避免这种情况,我要么向UIView类添加 getter 方法:
var userName: String{ return label.text }
Run Code Online (Sandbox Code Playgroud)
或者做一些仅添加到测试框架的扩展:
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
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是跳过 TDD 工作流程(即功能完成后手动测试)并添加快照测试(请参阅https://github.com/pointfreeco/swift-snapshot-testing)以增加覆盖率并具有安全性重构时.net。
考虑到这一切,我想知道是否有任何其他模式或方法可以用来提高效率,同时保持对代码的信心。