I was trying to write a unit test for a segue. my code looks like
private var sut: PresentViewController!
// sut is System Under Test
override func setUp() {
super.setUp()
let storyboard = UIStoryboard(name: "Research", bundle: Bundle.main)
let rootVC = storyboard.instantiateInitialViewController() as? UINavigationController
self.sut = rootVC?.viewControllers.first as? PresentViewController
let window = UIWindow(frame: UIScreen.main.bounds)
window.rootViewController = self.sut
window.makeKeyAndVisible()
sut.loadViewIfNeeded()
}
func testHelpButtonPresentViewController() {
XCTAssertNil(sut.presentedViewController)
UIApplication.shared.keyWindow?.rootViewController = self.sut
self.sut.performSegue(withIdentifier: "showInfoViewController", sender: nil)
XCTAssertNotNil(sut.navigationController)
XCTAssertTrue(sut.navigationController?.presentedViewController is DestinationViewController)
}
The get the following error Warning: Attempt to present < UINavigationController: 0x7f845f84c000 > on < myScheme.CurrentViewController: 0x7f845e7108f0 > whose view is not in the window hierarchy!
segue is triggered by a button action
kind: present modally
presentation: from sheet
My storyboard is given below