代码之家  ›  专栏  ›  技术社区  ›  pawel7318

如何检查Rails应用程序中的RSpec代码覆盖率?

  •  25
  • pawel7318  · 技术社区  · 10 年前

    我正在开发我的第一个简单Rails应用程序。现在我只是做了我的家庭作业,这是我应该在做任何其他事情之前做的——RSpec测试。我故意推迟了它,因为没有经验,我甚至不知道做RSpec测试的目的和方法。最后,我可能对我的模型和控制器进行了大多数测试,是时候考虑一下我的测试对代码的覆盖程度了。

    然后我发现 rake stats ,这表明:

    +----------------------+-------+-------+---------+---------+-----+-------+
    | Name                 | Lines |   LOC | Classes | Methods | M/C | LOC/M |
    +----------------------+-------+-------+---------+---------+-----+-------+
    | Controllers          |   214 |   161 |       4 |      29 |   7 |     3 |
    | Helpers              |    12 |    12 |       0 |       1 |   0 |    10 |
    | Models               |    17 |    13 |       2 |       0 |   0 |     0 |
    | Mailers              |     0 |     0 |       0 |       0 |   0 |     0 |
    | Javascripts          |    29 |     3 |       0 |       1 |   0 |     1 |
    | Libraries            |     0 |     0 |       0 |       0 |   0 |     0 |
    | Helper specs         |    15 |     4 |       0 |       0 |   0 |     0 |
    | Controller specs     |   170 |   137 |       0 |       0 |   0 |     0 |
    | Model specs          |    78 |    65 |       0 |       0 |   0 |     0 |
    +----------------------+-------+-------+---------+---------+-----+-------+
    | Total                |   535 |   395 |       6 |      31 |   5 |    10 |
    +----------------------+-------+-------+---------+---------+-----+-------+
      Code LOC: 189     Test LOC: 206     Code to Test Ratio: 1:1.1
    

    它显示了我的控制器和模型有多少类和方法。但我这里缺少的是有多少人接受了测试。我希望有它而不是零。同时,很高兴知道哪些方法没有被测试覆盖。是否有宝石提供该信息或其他检查方法?

    1 回复  |  直到 2 年前
        1
  •  38
  •   tirdadc    3 年前

    我建议 SimpleCov 为此。

    下面是一个很好的开始配置,可以将其放入您的spec_helper.rb中:

    SimpleCov.start do
      add_filter '/test/'
      add_filter '/config/'
      add_filter '/vendor/'
      
      add_group 'Controllers', 'app/controllers'
      add_group 'Models', 'app/models'
      add_group 'Helpers', 'app/helpers'
      add_group 'Mailers', 'app/mailers'
    end
    # OPTIONAL
    # This outputs the report to your public folder
    # You will want to add this to .gitignore
    SimpleCov.coverage_dir 'public/coverage'
    

    这使得它忽略测试、配置和供应商文件夹中的文件,并将控制器、模型、助手和邮件程序分组到HTML报告中各自的选项卡下。