运行 测试时不触发 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
我正在使用 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