I'd say "Build One To Improve" instead of "Build One To Throw Away".
Software is infinitely malleable, so there's no need to start from scratch. You can morph your code from its present state to any desired state smoothly, keeping it working (and passing all its unit tests) the whole time.
"Throwing one away" usually also throws away lots of hard-won corner case fixes and QA testing.
Write unit tests first, they are not just for bugs. They help a lot with scope and design. Then you might not have to build something just to throw it away.
To my mind, the main value of writing good units test isn't that it makes your implementation better at the beginning of a project. Rather, they make it possible to quickly iterate through alternative implementations and verify their correctness, or reject them if incorrect.
Regardless, Tim does have a robust test suite for mod_atom -- the Atom Protocol Exerciser (APE), which he wrote long before starting work on his own implementation. It serves as a reference test client for any AtomPub service, which is rather more valuable IMHO than simple unit testing.