我正在为我的项目编写单元测试用例并且遇到很多问题,因为这是我第一次编写测试用例。我的应用程序是典型的登录,然后基于导航控制器的应用程序。 我正在为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
答案 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方法中没有初始化任何对象,那么你可能会遇到崩溃。你无法处理这个问题。