ios - XCTest 中 viewDidLoad 的设置值

标签 ios swift unit-testing xctest

我正在为我的一个项目编写单元测试用例,并且遇到很多问题,因为这是我第一次编写测试用例。我的应用程序是一个典型的登录,然后是基于导航 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/

相关文章:

swift - 尝试使IOS应用说泰卢固语。没有语音输出。但是,它适用于其他语言

ios - 将网络代码移出 Controller

ios - 为什么 "Use for Development"没有出现在带有 IOS 8.0 的 Xcode 6 和 iPhone 5 中

ios - Swift 3 中的 JTAppleCalendar 单元格背景颜色更改错误

ios - 错误检查无法正常用于解析查询

swift - Xcode Swift 单元测试输出过于冗长

javascript - 引用错误 : $ is not defined - Jasmine

ios - 无法在不同的 iPhone 设备上放置围绕 imageView 的圆形层

swift - 如何在 Swift 中使用 Msgraph 访问共享点列表

javascript - Angular 4( karma )测试输入字段的输入值