That's the right way to do TDD, see this talk: https://www.youtube.com/watch?v=EZ05e7EMOLM
One of the above comments mentions BDD as a close cousin to TDD, but that is wrong as TDD is actually BDD as you should only be testing behaviours, which allow you to "fearlessly refactor"