我的一些Rspec测试已经变得非常大(2000-5000行)。我只是想知道是否有人尝试将这些测试分解为多个符合以下条件的文件:

  • 有一种命名和放置测试的系统方法(例如,方法A-L转到user_spec1.rb)。
  • 您可以运行一个文件,该文件实际上将在其他文件中运行其他测试。
  • 您仍然可以在文件
  • 中运行特定上下文
  • 和RubyMine可以很好地运行特定的测试(以及所有测试)。

  • 目前,我已经成功完成了
    #user_spec.rb
    require 'spec_helper'
    require File.expand_path("../user_spec1.rb", __FILE__)
    include UserSpec
    
    #user_spec1.rb
    module UserSpec do
      describe User do
        ..
      end
    end
    

    最佳答案

    如果您的规范太大,那么您的模型也可能太大了-由于您在此处使用了“UserSpec”,因此您可以说您的用户类是“God class”。也就是说,它做得太多了。

    因此,我将其分解成小得多的类,每个类都有一个职责。然后,隔离测试这些类。

    您可能会发现,您的User类知道如何执行系统中的大多数逻辑-这是一个容易陷入的陷阱,但是如果您将逻辑放在将用户作为参数的类中,则可以避免这种情况。同样,如果您坚定地遵守demeter的定律(您的用户类别只能触摸其下一级,但不能达到二级)。

    扩展阅读:http://blog.rubybestpractices.com/posts/gregory/055-issue-23-solid-design.html

    关于ruby-on-rails - 分解您的RSpec测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8540986/

    10-12 04:08
    查看更多