为什么我应该在Rails中使用RSpec或者Shoulda?

时间:2020-03-06 14:29:53  来源:igfitidea点击:

我正在设置一个Rails应用程序,刚刚完成了一些单元测试,我的朋友说,显然灯具已经不再酷了,人们现在正在使用RSpec或者Shoulda。我想知道使用这些其他工具包的实际好处是什么。任何信息都将不胜感激。

-fREW

解决方案

RSpec的功能更强大,因为它可以更轻松地读取和写入测试。在使用模拟和存根时,它也非常优雅。一旦在测试中开始使用它们,该概念将变得非常有用。在一个简单的测试应用程序(无轨道!)中进行尝试,我们将看到规格与同等标准测试相比有多么优雅。

RSpec和类似框架是旨在帮助行为驱动开发的工具。尽管它们确实提供了帮助,但它们不仅是编写测试的更漂亮的方式。

有关BDD的大量信息,请访问:http://behaviour-driven.org/
和维基百科:http://en.wikipedia.org/wiki/Behavior_Driven_Development

这里列出了太多好处,因此我建议我们稍微浏览一下该网站。

我个人更喜欢Shoulda而不是RSpec。我发现Shoulda的语法比RSpec少。我对RSpec的问题是,是的,当我大声阅读时,它非常可读,但是当我开始编写它时,嗯,我不确定如何编写给定的断言。普拉格·戴夫(Prag Dave)比我更好地解释了这个问题。他也喜欢Shoulda并举几个例子。

这里有两件事:

第一件事是用于编写测试/规范的框架。在这里,我们可以在Test :: Unit,RSpec,Shoulda等之间进行选择。选择是我们要执行传统的TDD(Test :: Unit),还是希望采用其他方式来思考由像David Chemlinsky这样的开发人员所倡导的规范行为(RSpec,在某种程度上应为Shoulda)。

第二件事是如何处理测试数据。有Rails固定装置和其他目标,例如FixtureReplacement插件。在Rails 2.0之前,固定装置存在重大且有据可查的实用问题。 Rails 2.0解决了许多实际问题。但是,夹具可能会导致意外的测试耦合,某些替代方法试图避免这种情况。

请查看Josh Susser的" The Great Test Framework Dance-off",以比较流行的Ruby测试框架。