There is a subtle difference between SpecBDD and TDD imo. Yes, they both write tests and they both should first fail and then pass. However, it's in the way you write test. In Unit testing, you are focussing on testing that the object does what you tell them to do. In specs, you are focussing on the public API: When a user uses this object, what does he what to do with it?