我正在为我的一个项目编写单元测试用例,并且遇到很多问题,因为这是我第一次编写测试用例。我的应用程序是一个典型的登录,然后是基于导航 Controller 的应用程序。 我正在为 viewcontroller 编写测试用例,我在 viewdidload 中设置了一些值。这些值是从 NSUserdefaults 和以前的 View Controller 中获取的。我在 xunit 的 setup() 方法中创建了 viewcontroller 的对象,如下所示:
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: NSBundle(forClass: self.dynamicType))
viewController = storyboard.instantiateViewControllerWithIdentifier("AlertDetailsViewController") as! AlertDetailsViewController
现在,当我运行安装程序时出现崩溃,因为在加载之前没有此类应该接收到的对象。有没有一种方法可以在加载 viewdidLoad() 之前为我的 viewcontroller 设置值? 另外我应该如何测试它的 nsuserdefaults。我需要从 nsuserdefault 保存/检索值。有没有办法模拟它?
问候
潘卡吉
最佳答案
我知道回复晚了..但这是给新观众的...
var alertdetailViewController: UIViewController?
weak var alertDetailViewControllerObj: AlertDetailsViewController?
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
alertdetailViewController = UIStoryboard(name: "AlertDetailsViewController", bundle: nil).instantiateViewController(withIdentifier: "AlertDetailsViewController")
ashTestResultViewControllerObj = alertdetailViewController as? AlertDetailsViewController
XCTAssertNotNil(alertdetailViewController?.viewDidLoad())
alertdetailViewController 的viewDidLoad 将开始执行。您可以设置断点并调试您的viewdidload 方法。 如果任何对象未在您的 Viewcontroller 的 viewDidLoad 方法中初始化,那么您可能会崩溃。您无法处理这种情况。
关于ios - XCTest 中 viewDidLoad 的设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33141163/