我正在设置一个rails应用程序,我刚刚完成了一些单元测试,我的朋友说显然固定装置不再很酷,人们现在正在使用RSpec或者应该。我想知道使用这些其他工具包的实际好处是什么。任何信息都表示赞赏。

-fREW

有帮助吗?

解决方案

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,在某种程度上还是应该)。

第二件事是如何处理测试数据。有其他目标设置的Rails装置和替代品,例如 FixtureReplacement插件。在Rails 2.0灯具具有重要且记录良好的实际问题之前。 Rails 2.0中修复了许多实际问题。然而,固定装置可能导致无意的测试耦合,一些替代方案试图避免这种情况。

RSpec更强大,因为它更容易进行读写测试。当使用模拟和存根时,它也非常优雅,这个概念在你开始在测试中使用时会变得非常有用。在一个简单的测试应用程序(NON RAILS!)中尝试它,你会看到你的规格与同等的标准测试相比有多优雅。

查看Josh Susser的 The Great Test框架舞蹈,用于比较流行的Ruby测试框架。

如果你正在构建一个大型应用程序,并且没有一个团队非常擅长编写可以通过黑盒测试进行良好测试的解耦代码,并准备完全接受使用/调试大量的模拟和放大器。存根,不要走工厂路。

无论你在哪里阅读有关如何使用Awesome Factories的信息,你都会看到一些关于工厂在大型应用程序中可能不可行的警告,因为它们比灯具慢一点。

但是“慢一点”实际上要慢几个数量级。

只要您将灯具组织起来,工厂就不会比使用ids标签的灯具更容易编码。在某些情况下,工厂更难调试。

就在今晚,我将一个工厂转换为灯具,并且使用它的测试文件的运行时间从65秒到15秒,即使该测试文件中只有大约15%的测试使用该工厂。

如果您使用minitest,您可以按随机顺序运行测试;这将很快揭示测试之间的任何数据耦合。 (不确定rspec是否可以选择随机化测试顺序)

Test :: Unit适用于小型应用程序。但是使用像Shoulda或RSpec这样的测试框架有很多好处,例如。 G。上下文!!

我没有看到过任何一种关系中的Shoulda和RSpec。当涉及单断言测试时,我使用Shoulda作为RSpec的替代品。我非常喜欢Shoulda单行,但在RSpec中编写匹配器要容易得多。所以我的建议是使用最适合的不同测试工具。

您可以使用像Cucumber这样的测试框架,它比RSpec更快。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top