这里有一点背景:
我正在尝试测试某些功能。我无法更改函数或任何类变量中的任何内容。
所以我在单元测试中调用此函数,问题是,有一个布尔标志,如果此标志未设置为true,则该方法只是不执行。但是此标志有一个私有的二传手,所以我可以直接设置它。
我问周围有人告诉我在测试文件中使用扩展名来设置变量,但是我尝试过如果扩展名与函数不在同一个文件中,我认为我无法设置它。难道我做错了什么?还是有其他测试方法?
答案 0 :(得分:-1)
他们指的是在被测类的文件中放置扩展名。因此,如果您有类似的东西:
class ToBeTested {
private(set) var bool: Bool
}
您可以添加内部设置器:
extension ToBeTested {
func setBoolTrue() { bool = true }
}
但这必须与ToBeTested
在同一文件中。如果您不能修改该文件,那么这不是一个可解决的问题。如果需要通过这种方式进行测试,则需要设计该类以允许这样做。
将属性标记为private(set)
时,编译器可以假定该值不能在该文件之外进行任何更改。如果该属性在此文件外部可更改,则允许它应用可能无效的优化。如果编译器确定不需要“ setter方法”,则甚至不存在。例如,它可以完全内联该操作,或者如果可以证明该值从未更改,则可以完全消除该操作。