运行 测试时不触发 mixpanel-ruby 事件

Not firing mixpanel-ruby events when running tests

我正在使用 mixpanel-ruby 库发送分析事件。跟踪器在初始化程序中定义:

require 'mixpanel-ruby'
$mixpanel = Mixpanel::Tracker.new(Figaro.env.mixpanel_token)

if Rails.env.development? 
  # Silence local SSL errors
  Mixpanel.config_http do |http|
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  end
end

在我的控制器中,我触发了这样的事件:

def resume
  @study.resume!
  redirect_to studies_url, notice: 'Study resumed'
  $mixpanel.track(current_user.id, 'Resume study')
end

这很好用,但是当我 运行 使用 rspec spec 测试套件时,事件被触发,这并不理想,因为它占用了我每月的事件津贴,更不用说扭曲数据了.

如何防止它们在测试环境中触发?

要么使用代理(puffingbilly 等)来模拟 mixpanel 服务,要么使用像

这样的自定义消费者进行配置
$mixpanel = if Rails.env.test?
    Mixpanel::Tracker.new(Figaro.env.mixpanel_token) do |type, message|
        # You can just discard the track in here if you'd like, or you can
        # put it somewhere if you want to test your tracking
        # track_log << [type, message]
    end
else
    Mixpanel::Tracker.new(Figaro.env.mixpanel_token)   # Use the default if we're not testing
end

来自 https://github.com/mixpanel/mixpanel-ruby/issues/35