我正在使用XCUnitTests测试我的UiViewController
。
有时我必须模拟UIViewController
才能捕获方法调用。例如,是否已调用performSegue
。
有时我测试的方法之一(如viewDidLoad
)访问IBOutlet。当我创建一个自定义模拟子类然后说mockViewController.textfield = UITextField()
时,一切都很好。
但是,当我想手动实例化UIView
或UIStackView
时,变量仍为零,即使UIView
的初始化程序永远不会返回nil。为什么?
这可能与UIView
和UIStackView
有关,因为它没有内在的内容大小?我该如何解决这个问题?
答案 0 :(得分:0)
发布此问题后,我已经找到了答案。
我的手动实例化视图消失的原因是我的@IBOutlet
是weak var
。 Weak
只是意味着变量本身无法使实例保持活动状态。您需要一些其他变量来保持实例存活。在我的情况下,而不是做
mockViewController.stackView = UIStackView()
我做
let stackView = UIStackView()
mockViewController.stackView = stackView
这样变量stackView
可以使实例保持活动状态。