我有一个Rails项目,其中我是一个分析库,用于跟踪代码不同部分的操作。我的初始化代码如下所示:
# config/initializers/analytics.rb
Analytics = SuperAnalytics.new({
api_key: '[SECRET]',
on_error: Proc.new { |status, msg| print msg }
})
我的控制器代码如下所示:
def register
email = params[:email]
return unless email.present?
Analytics.identify(
user: email,
parameters: {
email: email,
}
)
end
我的测试代码:
context '#register' do
it 'should create an identify tracking event' do
get :register, email: 'test@test.com'
response.status.should == 200
Analytics.should_receive(:identify)
end
end
我的测试失败了
Failure/Error: Analytics.should_receive(:identify)
(#<SuperAnalytics:0x007f8354594ac8>).identify(any args)
expected: 1 time
received: 0 times
在初始化程序中初始化的全局变量的存根方法是否存在问题?我在这里错过了什么吗?
谢谢!
答案 0 :(得分:1)
我认为你必须把期望放在开头
context '#register' do
it 'should create an identify tracking event' do
Analytics.should_receive(:identify)
get :register, email: 'test@test.com'
response.status.should == 200
end
end
否则,您说“分析应该在执行以下代码时收到此消息”,但是没有以下代码。
例如,请参阅rspec documentation: