Ich möchte testen, ob ein ViewController auf den Navigation-Stack gepusht wurde. Ich mache das zur Zeit so:
Alles anzeigen
Ich finde das sieht seltsam aus. Gibt es eine bessere Lösung? Wie testet ihr das?
Quellcode
-
- func testViewControllerGotPushedStoryboardVersion() {
- class MockNavigationController: UINavigationController {
- var pushedViewController: UIViewController?
- private override func pushViewController(viewController: UIViewController, animated: Bool) {
- pushedViewController = viewController
- super.pushViewController(viewController, animated: animated)
- }
- }
- let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("MasterViewController") as MasterViewController
- let mockNavigationController = MockNavigationController(rootViewController: viewController)
- let expectation = expectationWithDescription("should push")
- viewController.performSegueWithIdentifier("showDetail", sender: nil)
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(NSEC_PER_SEC*0)), dispatch_get_main_queue()) { () -> Void in
- XCTAssertTrue(mockNavigationController.pushedViewController is DetailViewController, "")
- expectation.fulfill()
- }
- waitForExpectationsWithTimeout(1, handler: nil)
- }
Ich finde das sieht seltsam aus. Gibt es eine bessere Lösung? Wie testet ihr das?