RSpec - ไวยากรณ์พื้นฐาน

มาดูโค้ดของไฟล์ HelloWorldตัวอย่าง. ก่อนอื่นในกรณีที่ไม่ชัดเจนเรากำลังทดสอบการทำงานของไฟล์HelloWorldชั้นเรียน แน่นอนว่านี่เป็นคลาสง่ายๆที่มีเพียงวิธีเดียวเท่านั้นsay_hello().

นี่คือรหัส RSpec อีกครั้ง -

describe HelloWorld do 
   context “When testing the HelloWorld class” do 
      
      it "The say_hello method should return 'Hello World'" do 
         hw = HelloWorld.new 
         message = hw.say_hello 
         expect(message).to eq "Hello World!" 
      end
      
   end 
end

คำอธิบายคำหลัก

คำ describeเป็นคำหลัก RSpec ใช้เพื่อกำหนด“ กลุ่มตัวอย่าง” คุณสามารถนึกถึง“ กลุ่มตัวอย่าง” เป็นชุดการทดสอบ describeคำหลักสามารถใช้ชื่อคลาสและ / หรืออาร์กิวเมนต์สตริง คุณต้องส่งอาร์กิวเมนต์บล็อกไปที่describeซึ่งจะประกอบด้วยการทดสอบแต่ละรายการหรือที่รู้จักกันใน RSpec ว่า“ ตัวอย่าง” บล็อกนี้เป็นเพียงบล็อก Ruby ที่ Ruby กำหนดdo/end คำหลัก

คีย์เวิร์ดบริบท

context คีย์เวิร์ดคล้ายกับ describe. นอกจากนี้ยังสามารถยอมรับชื่อคลาสและ / หรืออาร์กิวเมนต์สตริง คุณควรใช้บล็อกกับcontextเช่นกัน. แนวคิดของบริบทคือมันรวมการทดสอบบางประเภท

ตัวอย่างเช่นคุณสามารถระบุกลุ่มตัวอย่างที่มีบริบทต่างกันเช่นนี้ -

context “When passing bad parameters to the foobar() method” 
context “When passing valid parameters to the foobar() method” 
context “When testing corner cases with the foobar() method”

context ไม่จำเป็นต้องใช้คำหลัก แต่ช่วยเพิ่มรายละเอียดเพิ่มเติมเกี่ยวกับตัวอย่างที่มีอยู่

คีย์เวิร์ดไอที

คำ itเป็นคำหลัก RSpec อีกคำหนึ่งที่ใช้กำหนด "ตัวอย่าง" ตัวอย่างคือการทดสอบหรือกรณีทดสอบ อีกครั้งเช่นdescribe และ context, it ยอมรับทั้งอาร์กิวเมนต์ชื่อคลาสและสตริงและควรใช้กับอาร์กิวเมนต์บล็อกที่กำหนดด้วย do/end. ในกรณีของitเป็นเรื่องปกติที่จะส่งผ่านสตริงและบล็อกอาร์กิวเมนต์เท่านั้น อาร์กิวเมนต์สตริงมักใช้คำว่า "ควร" และมีขึ้นเพื่ออธิบายถึงพฤติกรรมเฉพาะที่ควรเกิดขึ้นภายในไฟล์it block. กล่าวอีกนัยหนึ่งก็คืออธิบายว่าผลลัพธ์ที่คาดหวังนั้นเป็นไปตามตัวอย่าง

หมายเหตุ it block จากตัวอย่าง HelloWorld ของเรา -

it "The say_hello method should return 'Hello World'" do

สตริงทำให้ชัดเจนว่าจะเกิดอะไรขึ้นเมื่อเราโทรทักทายในตัวอย่างของคลาส HelloWorld ส่วนนี้ของปรัชญา RSpec ตัวอย่างไม่ได้เป็นเพียงการทดสอบ แต่ยังเป็นข้อมูลจำเพาะ (ข้อมูลจำเพาะ) กล่าวอีกนัยหนึ่งคือตัวอย่างทั้งเอกสารและทดสอบพฤติกรรมที่คาดหวังของรหัส Ruby ของคุณ

คีย์เวิร์ดที่คาดหวัง

expectคำหลักใช้เพื่อกำหนด“ ความคาดหวัง” ใน RSpec นี่เป็นขั้นตอนการตรวจสอบที่เราตรวจสอบว่าตรงตามเงื่อนไขที่คาดหวังไว้

จากตัวอย่าง HelloWorld ของเราเรามี -

expect(message).to eql "Hello World!"

ความคิดกับ expectข้อความคือพวกเขาอ่านเหมือนภาษาอังกฤษทั่วไป คุณสามารถพูดดัง ๆ ว่า“ คาดว่าข้อความตัวแปรจะเท่ากับสตริง 'Hello World'” แนวคิดก็คือเป็นคำอธิบายและอ่านง่ายแม้กระทั่งสำหรับผู้มีส่วนได้ส่วนเสียที่ไม่ใช่ด้านเทคนิคเช่นผู้จัดการโครงการ

The to keyword

to คำหลักถูกใช้เป็นส่วนหนึ่งของ expectงบ โปรดทราบว่าคุณยังสามารถใช้ไฟล์not_toคีย์เวิร์ดเพื่อแสดงสิ่งที่ตรงกันข้ามเมื่อคุณต้องการให้ Expectation เป็นเท็จ คุณจะเห็นว่า to ใช้กับจุดexpect(message).to,เพราะจริงๆแล้วมันเป็นเพียงวิธีปกติของ Ruby ในความเป็นจริงคำหลัก RSpec ทั้งหมดเป็นเพียงวิธี Ruby เท่านั้น

The eql keyword

eqlคีย์เวิร์ดคือคีย์เวิร์ด RSpec พิเศษที่เรียกว่า Matcher คุณใช้ Matchers เพื่อระบุประเภทของเงื่อนไขที่คุณกำลังทดสอบว่าเป็นจริง (หรือเท็จ)

ใน HelloWorld ของเรา expect เป็นที่ชัดเจนว่า eqlหมายถึงความเท่าเทียมกันของสตริง โปรดทราบว่ามีตัวดำเนินการความเท่าเทียมกันหลายประเภทใน Ruby และด้วยเหตุนี้ Matchers ที่เกี่ยวข้องที่แตกต่างกันใน RSpec เราจะสำรวจ Matchers ประเภทต่างๆมากมายในส่วนต่อไป