1

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

enter image description here

Abin Baby
  • 586
  • 6
  • 17
  • Possible duplicate of [What are the advantages of XCTest over SenTestingKit?](https://stackoverflow.com/questions/18854852/what-are-the-advantages-of-xctest-over-sentestingkit) – Mirek Mar 06 '18 at 14:47

0 Answers0