They get another failure, but they know where it is. The fix that one and rerun the tests. Design happens when it needs to, usually at a whiteboard. You can't design everything up front, because things change along the way. When there is a need for design, we sketch out some UML on the whiteboard.
Design evolves with the system.
Even programmers need to eat. Their class works beautifully. They decide it's time to integrate their new code. They run the tests for the entire system. They have a good laugh while they load the missing pieces.