S01E22: [TDD ๐ 19] Testing a Submit Button with MVC in Swift
In this episode, we simplify the iOSViewControllerFactory
implementation and test-drive the QuestionViewController
submit button.
As discussed in previous episodes, we donโt want to manually force the view to load in the iOSViewControllerFactory
just to be able to configure its subviews, since, according to the UIKit documentation, it's not how it is intended to be used.
To avoid manually forcing the view to load, we move the subviews configuration to the QuestionViewController
so the view load happens naturally and at the right time.
Furthermore, we start test-driving the submit button logic and we debate where it should live, as it could either be in the factory (Main module) or in the router (Routing module).
Since the Submit button is a navigationItem
button, a very specific component of a UINavigationController
, we decided to create the button in the router which coordinates the navigation.
To achieve the enabled/disabled button functionality, we notice we have a perfect case for using MVC! We have a Model (selected answers Array
), a View (UIBarButtonItem
), and we just lack a Controller to bind the model and the view together.
Finally, we start test-driving the button controller while demonstrating how MVC provides better results when dealing with a single view.
And thenโฆ Trouble ahead!
Subscribe now to our Youtube channel and catch free new episodes every week and follow along the project's progress on GitHub.