来自XCTest的viewDidLoad的设置值

时间:2015-10-15 06:15:03

标签: ios swift unit-testing xctest

我正在为我的项目编写单元测试用例并且遇到很多问题,因为这是我第一次编写测试用例。我的应用程序是典型的登录,然后基于导航控制器的应用程序。 我正在为viewcontroller编写测试用例,我在viewdidload中设置了一些值。这些值是从NSUserdefaults和之前的viewcontroller中获取的。我在xunit的setup()方法中创建了viewcontroller的对象,如下所示:

let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: NSBundle(forClass: self.dynamicType))
    viewController = storyboard.instantiateViewControllerWithIdentifier("AlertDetailsViewController") as! AlertDetailsViewController

现在,当我运行setup时会发生崩溃,因为在加载之前没有该类应该接收的对象。有没有办法在加载viewdidLoad()之前为viewcontroller设置值? 另外我应该如何测试nsuserdefaults。我需要从nsuserdefault保存/检索值。有没有办法嘲笑它?

问候
的Pankaj

1 个答案:

答案 0 :(得分:0)

我知道这是迟到的回复..但这是为新观众...

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方法中没有初始化任何对象,那么你可能会遇到崩溃。你无法处理这个问题。