RSpec - ความคาดหวัง

เมื่อคุณเรียนรู้ RSpec คุณอาจอ่านมากเกี่ยวกับความคาดหวังและในตอนแรกอาจสับสนเล็กน้อย มีรายละเอียดหลักสองประการที่คุณควรคำนึงถึงเมื่อคุณเห็นคำว่า Expectation -

  • ความคาดหวังเป็นเพียงคำสั่งในไฟล์ it block ที่ใช้ expect()วิธี. แค่นั้นแหละ. ไม่ซับซ้อนไปกว่านั้น เมื่อคุณมีรหัสเช่นนี้:expect(1 + 1).to eq(2)คุณมีความคาดหวังในตัวอย่างของคุณ คุณคาดหวังว่าการแสดงออก1 + 1 ประเมินเป็น 2. ข้อความมีความสำคัญแม้ว่า RSpec เป็นกรอบการทดสอบ BDD การเรียกคำสั่งนี้ว่า Expectation เป็นที่ชัดเจนว่ารหัส RSpec ของคุณกำลังอธิบายถึง "พฤติกรรม" ของโค้ดที่กำลังทดสอบ แนวคิดก็คือคุณกำลังแสดงให้เห็นว่าโค้ดควรทำงานอย่างไรในลักษณะที่อ่านเหมือนเอกสารประกอบ

  • ไวยากรณ์ Expectation ค่อนข้างใหม่ ก่อนหน้าexpect() มีการแนะนำวิธีการ (ย้อนกลับไปในปี 2012) RSpec ใช้ไวยากรณ์ที่แตกต่างกันซึ่งขึ้นอยู่กับ should()วิธี. ความคาดหวังข้างต้นเขียนไว้ในรูปแบบเก่า:(1 + 1).should eq(2).

คุณอาจพบไวยากรณ์ RSpec แบบเก่าสำหรับ Expectations เมื่อทำงานกับโค้ดที่เก่ากว่าหรือ RSpec เวอร์ชันเก่า หากคุณใช้ไวยากรณ์เก่ากับ RSpec เวอร์ชันใหม่คุณจะเห็นคำเตือน

ตัวอย่างเช่นด้วยรหัสนี้ -

RSpec.describe "An RSpec file that uses the old syntax" do
   it 'you should see a warning when you run this Example' do 
      (1 + 1).should eq(2) 
   end 
end

เมื่อคุณรันคุณจะได้ผลลัพธ์ที่มีลักษณะเช่นนี้ -

. Deprecation Warnings:

Using `should` from rspec-expectations' old `:should` 
   syntax without explicitly enabling the syntax is deprecated. 
   Use the new `:expect` syntax or explicitly enable 
	
`:should` with `config.expect_with( :rspec) { |c| c.syntax = :should }`
   instead. Called from C:/rspec_tutorial/spec/old_expectation.rb:3 :in 
   `block (2 levels) in <top (required)>'.

If you need more of the backtrace for any of these deprecations to
   identify where to make the necessary changes, you can configure 
`config.raise_errors_for_deprecations!`, and it will turn the deprecation 
   warnings into errors, giving you the full backtrace.

1 deprecation warning total 
Finished in 0.001 seconds (files took 0.11201 seconds to load) 
1 example, 0 failures

เว้นแต่คุณจะต้องใช้ไวยากรณ์แบบเก่าขอแนะนำอย่างยิ่งให้คุณใช้ expect () แทน should ()