次のメソッドの仕様を作成する必要があります。
def track_event
tracker = set_tracker
category = define_event_category
tracker.event(category: category, action: name, label: properties['short_name'], value: properties['paid'])
end
具体的には、event
が呼び出されたtracker
ときに変数でメソッドが呼び出されるかどうかを確認する必要がありますtrack_event
。私はこのようにそれをやろうとしました:
describe '#track_event' do
it 'should call event method' do
expect(tracker).to receive(:event)
end
end
エラーが発生しましたundefined local variable or method 'tracker'
。私は何を間違えますか?
tracker
ローカル変数であるためアクセスできません。
set_tracker
代わりにメソッドをスタブして、インスタンスを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
あなたのテスト対象です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加