【问题标题】:Why rspec has so many kind of tests?为什么 rspec 有这么多种测试?
【发布时间】:2013-01-05 01:44:24
【问题描述】:

我很困惑。我应该在控制器文件夹中测试什么?返回成功代码的控制器操作?为什么,如果我可以通过一个命令在集成测试中做到这一点? 什么是视图测试?测试视图是否有一些 html 标签?我也可以在集成测试中做到这一点。

模型需要测试验证规则吗?感谢您的帮助。

【问题讨论】:

    标签: ruby-on-rails ruby rspec integration-testing bdd


    【解决方案1】:

    我使用此准则https://github.com/bbatsov/rails-style-guide#rspec

    您可以进行很多集成测试,但速度会很慢。我喜欢制作很多控制器、模型和视图规范,然后只制作一些集成规范。

    【讨论】:

      【解决方案2】:

      控制器规范中有一些更容易实现的测试。

      一个例子:

      场景: 一个人想要测试对一组视图的授权访问(让我们假设非授权用户将被重定向到登录页面)。

      集成测试方法: 这可以通过集成测试来测试视图,这往往执行速度较慢(访问登录页面,填写凭据字段并按 Enter,访问页面进行测试...)

      控制器测试方法: 可以测试每个控制器的方法并检查响应代码。响应是重定向吗? (代码 200)。此外,由于控制器中的方法是 Rails 应用程序的入口点,因此可以肯定控制器规范涵盖了其他视图。

      【讨论】:

        【解决方案3】:

        如果您只对单元(模型)和集成规范有信心,并且它为您的应用提供了足够的覆盖范围,那么您可以忽略其他规范。如果你只做这两个,我可以告诉你,你做的比普通开发人员更多。大多数开发人员也只使用这些。

        但是当你有一个巨大的应用程序时,你应该考虑一下控制器测试很有用。我的意思是,在集成测试中,您不应该测试 http 响应或某些文本是否在 h1 HTML 标记内,因为如果您更改视图,您将需要更改集成测试,而不仅仅是更改视图测试(如果有的话)。

        有多种测试,因此您可以将您的功能分解为多个部分,然后您就可以看到到底出了什么问题。是模型上的吗?控制器?

        但完全不要强迫自己编写你觉得对你没有用的测试

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-29
          相关资源
          最近更新 更多