Vla*_*IGA 6 testing ruby-on-rails
对于控制器测试,Rails建议检查HTTP响应,身份验证,分配,会话和Flash消息等内容.但是在我现在正在使用的应用程序中,我看到很多带有response.body.should has_tag()的Rspec测试,据我所知,理想情况下它适用于视图测试.
我想知道的是:
这种不理想的测试方式是否有相当大的性能/其他类型的惩罚?
mon*_*cle 10
如果您在控制器中渲染视图,这将使您的控制器测试花费更多时间.这完全取决于您是否认为测试视图元素的存在是否值得(这会使您的测试更加脆弱).如果这样做,那么在控制器规范中执行此操作会使其更容易,因为您不必编写单独的视图规范文件.
如果你想在你的视图上测试很多东西,那么你可能想要编写单独的视图规范.分离视图规范可能会使测试套件的总运行时间增加.但是,出于调试目的,可以清楚地看到视图中的某些内容是否与分离出来的控制器有关.
我怀疑大多数Rails程序员不会编写视图规范.相反,他们可能依靠他们的集成测试(Capybara +/- Cucumber)来测试他们的观点.但是,集成测试比单元测试需要更多时间.RSpec书为编写单独的视图规范提供了以下参数:
查看规范为我们提供了从控制器和模型中发现我们需要的API的机会.当API遵循大多数标准约定时,这没有那么有价值.然而,当我们偏离它们时,价值会增加......
真正了解它们[查看测试]的好处的唯一方法是学会写好它们.只有当您真正理解它们如何适应流程时,您才能够就是否以及何时使用它们做出明确的决定.