我必须为以下方法编写规范:
def track_event
tracker = set_tracker
category = define_event_category
tracker.event(category: category, action: name, label: properties['short_name'], value: properties['paid'])
end
具体来说,当 track_event
被调用时,我必须检查方法 event
是否在变量 tracker
上被调用。我试着这样做:
describe '#track_event' do
it 'should call event method' do
expect(tracker).to receive(:event)
end
end
并得到一个错误undefined local variable or method 'tracker'
。我做错了什么?
最佳答案
您不能访问 tracker
,因为它是一个局部变量。
您可以 stub 您的 set_tracker
方法并返回一个 instance double :
describe '#track_event' do
let(:tracker_double) { instance_double(Tracker) }
it 'should call event method' do
allow(foo).to receive(:set_tracker).and_return(tracker_double)
expect(tracker_double).to receive(:event)
foo.track_event
end
end
foo
是您的测试对象。</p>
关于ruby-on-rails - 使用 rspec 测试该方法在另一个方法中被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50022646/