为什么UIView在手动将其实例化为模拟UIViewController后为零?

时间:2018-03-10 20:01:16

标签: ios swift unit-testing xctest xctestcase

我正在使用XCUnitTests测试我的UiViewController

有时我必须模拟UIViewController才能捕获方法调用。例如,是否已调用performSegue

有时我测试的方法之一(如viewDidLoad)访问IBOutlet。当我创建一个自定义模拟子类然后说mockViewController.textfield = UITextField()时,一切都很好。

但是,当我想手动实例化UIViewUIStackView时,变量仍为零,即使UIView的初始化程序永远不会返回nil。为什么?

这可能与UIViewUIStackView有关,因为它没有内在的内容大小?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

发布此问题后,我已经找到了答案。

我的手动实例化视图消失的原因是我的@IBOutletweak varWeak只是意味着变量本身无法使实例保持活动状态。您需要一些其他变量来保持实例存活。在我的情况下,而不是做

mockViewController.stackView = UIStackView()

我做

let stackView = UIStackView() mockViewController.stackView = stackView

这样变量stackView可以使实例保持活动状态。