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

时间:2016-09-26 09:22:55

标签: ruby-on-rails ruby rspec capybara mixpanel

我使用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运行测试套件时,事件会被触发,这不是理想的,因为它会影响我的月度事件限额,更不用说使数据偏斜了。

如何防止这些在测试环境中触发?

1 个答案:

答案 0 :(得分:2)

使用代理(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