2011-06-14 71 views
6

对于控制器测试,Rails建议检查HTTP响应,身份验证,分配,会话和Flash消息等内容。然而,在我正在使用的应用程序中,我看到很多Rspec测试都使用了response.body.should have_tag(),据我所知,它理想地适用于视图测试。使用rspec最佳实践的Rails视图/控制器测试

我想知道的是:

是否有相当大的性能/其他实物,处罚相关检测的这种不理想的方式是什么?

回答

10

如果您在控制器中渲染视图,这将使您的控制器测试需要更多时间。这一切都取决于你是否认为值得测试视图元素的存在(这往往会使你的测试更脆弱)。如果这样做,那么在控制器规格中进行操作会更轻松,因为您不必编写单独的视图规格文件。

如果您想在视图上测试很多事情,那么您可能需要编写单独的视图规范。分离视图规格可能会让测试套件的总体运行时间增加。但是,出于调试的目的,可以清楚地看到一个视图与一个控制器分离的东西是否有问题。

我怀疑大多数Rails程序员不写视图规范。相反,他们可能依靠他们的整合测试(Capybara +/-黄瓜)来测试他们的观点。但是集成测试需要比单元测试更多的时间。 RSpec书为编写单独的视图规范提供以下参数:

查看规格为我们提供了一个机会,可以从控制器和模型中发现我们需要的API。当API遵循最标准的惯例时,这并不重要。然而,随着我们对他们的偏离,价值会增加。...

真正感受他们的好处的唯一方法是查看测试结果。只有当你真正了解它们在流程中的适应性时,你才能够就是否使用它们以及何时使用它们做出有根据的决定。