Ruby on rails Ruby/Rails测试实践
虽然我仍然认为自己是ruby/rails领域的一个不速之客,但我有兴趣就如何测试rails应用程序——使用哪些技术和覆盖级别以及何时使用——形成一种看法。我目前的政策是跟随我所从事的任何项目的发展,但这在技术和覆盖水平上产生了不一致的结果。唯一的一致性是测试优先的开发风格 Rspec用于控制器、模型和助手,Cumber用于函数(以简化测试优先开发),并使用test::Unit回填复杂的代码?所有的函数都是黄瓜吗?放弃测试::单元?测试::模型和助手的单元,以及其他所有内容的cucumberRuby on rails Ruby/Rails测试实践,ruby-on-rails,ruby,testing,rspec,cucumber,Ruby On Rails,Ruby,Testing,Rspec,Cucumber,虽然我仍然认为自己是ruby/rails领域的一个不速之客,但我有兴趣就如何测试rails应用程序——使用哪些技术和覆盖级别以及何时使用——形成一种看法。我目前的政策是跟随我所从事的任何项目的发展,但这在技术和覆盖水平上产生了不一致的结果。唯一的一致性是测试优先的开发风格 Rspec用于控制器、模型和助手,Cumber用于函数(以简化测试优先开发),并使用test::Unit回填复杂的代码?所有的函数都是黄瓜吗?放弃测试::单元?测试::模型和助手的单元,以及其他所有内容的cucumber 请分
请分享您的观点。在测试应用程序时,最重要的事情之一,比您的测试框架或方法更重要的是编写可测试代码 如果您使用测试驱动的方法进行开发,您自然会倾向于编写可测试的代码,但是您仍然需要专注于为自己提供适当的工具。目标是拥有一个透明的应用程序 需要重点关注的事项包括:
- 使您的方法专注于特定的函数,并在一种方法和另一种方法之间提供清晰的切换点
- 为单元级对象的内部提供足够的自省,而不必暴露太多信息
- 通过应用一致的术语和命名约定,创建结构更接近控制器和模型空间的HTML文档
如果您有一个专门的QA部门,可以专注于构建和维护一整套回归测试,那么集成测试是一件很好的事情。然而,对于一般的开发人员来说,它最终会造成巨大的工作重复,并严重拖累生产力。就像很多事情一样,它是关于取舍的。关于魔术师的好观点,很好的类比。只有我在很大程度上依赖于集成测试(与cucumber),不仅是在成熟的应用程序中,而且是为了让流程正常工作。我把所有东西都看作是集成测试,只是在不同的层面上:外部是cucumber,内部是RSpec测试模型(有时是控制器,如果它比传统的crud控制器更重要的话),但每个规范都是关于行为和隐藏食物链下游的细节。