In this episode, we finish test-driving the
QuestionViewController creation in the concrete view controller factory.
We discuss the importance of TDD and design by contract when defining architectural boundaries, since we have to decide what to do when a wrong setup prevents us from creating a view controller. To avoid polluting the abstract factory with lower level details of the concrete implementation, we decide to raise a
fatalError, since that would be a clear violation of our protocol contract.
Finally, we reflect on how to proceed with testing the results view controller creation, without having a
Presenter implementation yet. We decided to defer the factory implementation to build a concrete
Presenter first, instead of creating a protocol and mocking a
Presenter implementation to use in the tests, since it seems excessive to add another level of indirection to our design.