我在我的报道中发现了漏洞,因为我一直在控制器示例中模拟我的模型。当我删除控制器所依赖的模型方法时,我不会失败。
来自静态类型语言的 TDD,我总是会模拟对命中数据库的被测对象的依赖关系以提高速度。在上面的例子中我仍然会失败,因为我的模拟子类化了原始对象。我正在寻找动态语言的最佳实践。
谢谢。
更新:
在对此有很多相互矛盾的意见之后,似乎归结为您购买哪种哲学。
Rspec 社区似乎采用大量存根依赖项来实现被测对象的隔离。验收测试(传统上称为集成测试;)用于确保您的对象与它们的运行时依赖项一起工作。
shoulda / Test::Unit 社区似乎尽可能地远离存根。这允许您的测试确认您的测试对象实际上与它的依赖项一起工作。
该视频很好地总结了这一点:http: //vimeo.com/3296561