【问题标题】:How to Unit Test a Ruby on Rails Application如何对 Ruby on Rails 应用程序进行单元测试
【发布时间】:2018-12-27 22:01:45
【问题描述】:
我的公司最近收到了一份新合同,其中客户的技术是 Ruby 和 Ruby on Rails。我已经学完了这些,但我真的很难学习如何进行单元测试。由于单元测试(以及之后的其他测试)是项目第一部分的主要目标,因此弄清楚这一点至关重要。
在我所有的研究和谷歌搜索中,我遇到了 Rspec、Faker、FactoryBot、Capybara、Launchy、MiniTest 等技术。但是,我没有发现任何对它有超级帮助的东西。
请建议使用的最佳 gem 以及深入了解如何使用这些 gem 的链接。
提前致谢!
【问题讨论】:
标签:
ruby-on-rails
ruby
unit-testing
testing
tdd
【解决方案1】:
下载一个大型的、已完成的、测试驱动的 Rails 应用,例如 Redmine,并研究它的测试。阅读 /Agile Web Development with Rails/ - 所有这些网站都认为您已阅读的开创性书籍。
并练习“测试驱动开发”,首先编写测试,并让它们因正确的原因而失败,然后再编写通过测试的新代码。这将迫使您的测试变得有用,并使您的代码解耦并易于升级,同时整个过程可以抵抗错误。
【解决方案2】:
我建议使用 RSpec 以及您已经列出的其他内容。问题是,无论如何,单元测试并不难编写。您通常会测试模型,它们非常简单,例如测试验证、属性、类方法、实例方法等。
我建议不要测试类的私有接口,而只专注于测试公共方法。有些人,在不需要的时候,花不必要的时间去测试类的私有接口。
除此之外,就进入它。您可以整天阅读它,但深入研究它,您会看到它是如何流动的。
除此之外,请保持您的规格小而准确。确保理解 describe、context 和 it 块之间的区别。
我在行业中最尊重的公司之一是 Thoughtbot。这些库中的大多数都是由他们编写并积极维护的。检查他们的源代码以了解他们的结构化测试套件。