เมื่อเขียนการทดสอบ RSpec ฉันพบว่าตัวเองเขียนโค้ดจำนวนมากที่มีลักษณะเช่นนี้เพื่อให้แน่ใจว่ามีการเรียกวิธีการในระหว่างการดำเนินการทดสอบ (เพื่อประโยชน์ในการโต้แย้งสมมติว่าฉันไม่สามารถซักถามสถานะได้จริงๆ ของวัตถุหลังจากการโทรเนื่องจากการดำเนินการที่วิธีการดำเนินการไม่ใช่เรื่องง่ายที่จะเห็นผลของ)
describe "#foo"
it "should call 'bar' with appropriate arguments" do
called_bar = false
subject.stub(:bar).with("an argument I want") { called_bar = true }
subject.foo
expect(called_bar).to be_true
end
end
สิ่งที่ฉันอยากรู้คือ: มีไวยากรณ์ที่ดีกว่านี้หรือไม่? ฉันคิดถึง RSpec สุดเจ๋งที่จะลดโค้ดด้านบนลงเหลือสองสามบรรทัดหรือไม่? should_receive
ดูเหมือนว่าควรทำเช่นนี้ แต่อ่านเพิ่มเติมดูเหมือนว่าจะไม่ตรงกับสิ่งที่ทำ
should_receive
ดังนั้นฉันคิดว่าคำถามนั้นจะช่วยได้