ruby - 我怎样才能让工作服忽略我的 gem 作为依赖项的 gem 中的代码?

标签 ruby unit-testing testing code-coverage coveralls

我做了一个小 gem ( SmsSafe ),它目前有 100% 的代码覆盖率(根据 SimpleCov)。

但是,根据 Coveralls 的数据,它只有 41% 的覆盖率 ( report here )。

造成这种差异的原因似乎是 coveralls 将我的 gem 依赖项中的代码作为我代码的一部分,并提示那些没有被涵盖...

我似乎没有在我调查过的任何其他 gems 中执行此操作,而且我似乎没有在这些 gems 的代码库中进行任何特殊的工作服配置...

我调用 coveralls 的方式是在我的 Rakefile 中包含这个:

require 'coveralls/rake/task'
Coveralls::RakeTask.new
task :test_with_coveralls => ["test", "coveralls:push"]

并让 Travis 执行“test_with_coveralls”:

script: bundle exec rake test_with_coveralls

哪种添加方式才是正确的according to their docs

知道为什么会发生这种情况吗?

最佳答案

需要两个步骤。

一方面,按照 Coveralls 文档,将 SimpleCov 格式化程序设置为 Coveralls:

require "simplecov"
require "coveralls"
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
    SimpleCov::Formatter::HTMLFormatter,
    Coveralls::SimpleCov::Formatter
]

SimpleCov.formatter = Coveralls::SimpleCov::Formatter

不过,这并不能解决问题,这是未记录的部分:

调用SimpleCov.start时,确保过滤掉“/gemfiles/vendor”目录

SimpleCov.start do
    add_filter "/gemfiles/vendor"
end

关于ruby - 我怎样才能让工作服忽略我的 gem 作为依赖项的 gem 中的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27776564/

相关文章:

java - 如何对 AJAX 应用程序进行黑盒测试?

angularjs - 测试返回 promise 的 Angular 服务

mysql - rake 中止 : db:schema:dump

ruby - 我怎样才能写一个条件 :each in ruby more succinctly?

spring-boot - 单元测试 MockHttpServletRequest 不返回内容类型

c# - 用最小起订量模拟静态属性

unit-testing - 错误 : Non-assignable model expression: undefined

c# - 如何在 C# 中实现 WebDriverEventListener?

ruby-on-rails - ruby 中 CSV.open( ) 的第二个参数/参数是什么?

ruby-on-rails - ruby 拼接!或者 <&lt;! (如何优雅地修改对象的状态)