测试时默认 undoManager 为 nil
Default undoManager is nil when testing
我正在努力将一些测试添加到使用 undoManager
的 Swift 库中。在库的演示中,将以下打印添加到 viewDidAppear:
会导致打印 NSUndoManagerObject
。
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
print(undoManager)
}
我为测试写了另一个 ViewController,当我在 ViewController 的 viewDidAppear:
中有相同的代码时,打印 nil
。
我正在使用以下代码为测试创建 ViewController:
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
let storyboard = UIStoryboard(name: "Main", bundle: NSBundle(forClass: self.dynamicType))
viewController = storyboard.instantiateInitialViewController() as! ViewController
viewController.viewDidLoad()
viewController.viewDidAppear(false)
// Test and Load the View at the Same Time!
XCTAssertNotNil(viewController.view)
}
我在 ViewController 的 viewDidLoad:
中调用 becomeFirstResponder()
。
我想测试使用默认 undoManager
的逻辑,所以我需要弄清楚为什么它是 nil
。我试过为默认值 undoManager
分配 NSUndoManager
的新实例,但它是只读的 属性.
如果您有兴趣查看代码,请点击此处 Github repository。
我无法使用默认的 undoManager
来测试这个项目,但我最终使用了以下我认为同样有效的解决方案。在使用 undoManager
的 class 中,我添加了一个私有 NSUndoManager
变量,然后在 init
中定义它,如下所示:
classUndoManager = undoManager
if classUndoManager == nil {
classUndoManager = NSUndoManager()
}
任何使用 undoManager
的地方现在都使用 classUndoManager
。
我正在努力将一些测试添加到使用 undoManager
的 Swift 库中。在库的演示中,将以下打印添加到 viewDidAppear:
会导致打印 NSUndoManagerObject
。
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
print(undoManager)
}
我为测试写了另一个 ViewController,当我在 ViewController 的 viewDidAppear:
中有相同的代码时,打印 nil
。
我正在使用以下代码为测试创建 ViewController:
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
let storyboard = UIStoryboard(name: "Main", bundle: NSBundle(forClass: self.dynamicType))
viewController = storyboard.instantiateInitialViewController() as! ViewController
viewController.viewDidLoad()
viewController.viewDidAppear(false)
// Test and Load the View at the Same Time!
XCTAssertNotNil(viewController.view)
}
我在 ViewController 的 viewDidLoad:
中调用 becomeFirstResponder()
。
我想测试使用默认 undoManager
的逻辑,所以我需要弄清楚为什么它是 nil
。我试过为默认值 undoManager
分配 NSUndoManager
的新实例,但它是只读的 属性.
如果您有兴趣查看代码,请点击此处 Github repository。
我无法使用默认的 undoManager
来测试这个项目,但我最终使用了以下我认为同样有效的解决方案。在使用 undoManager
的 class 中,我添加了一个私有 NSUndoManager
变量,然后在 init
中定义它,如下所示:
classUndoManager = undoManager
if classUndoManager == nil {
classUndoManager = NSUndoManager()
}
任何使用 undoManager
的地方现在都使用 classUndoManager
。