Karma เป็นนักวิ่งทดสอบเบราว์เซอร์
แนวคิดคือเบราว์เซอร์ไม่มีแนวคิดในการโหลดไฟล์ทดสอบเรียกใช้และผลการรายงาน กรรมทำอะไร (โดยประมาณ):
- การเริ่มต้นเว็บเซิร์ฟเวอร์ขนาดเล็กเพื่อให้บริการไฟล์จาวาสคริปต์ "ฝั่งไคลเอ็นต์" ที่จะทดสอบ (1)
- ยังให้บริการไฟล์จาวาสคริปต์ "ฝั่งไคลเอ็นต์" ด้วยการทดสอบ (หรือสเป็คตามที่มักเรียกว่า) (2)
- ให้บริการหน้าเว็บที่กำหนดเองที่จะเรียกใช้รหัสจาวาสคริปต์สำหรับการทดสอบ (3)
- เริ่มเบราว์เซอร์เพื่อโหลดหน้านี้ (4)
- รายงานผลการทดสอบไปยังเซิร์ฟเวอร์ (5)
- กรรมนั้นสามารถรายงานผลลัพธ์ไปยังไฟล์ข้อความคอนโซลสิ่งอื่นใดที่เซิร์ฟเวอร์ CI ของคุณชอบ ฯลฯ ...
ดูแต่ละส่วน:
(1) ไฟล์เหล่านั้นจะเป็นไฟล์ js ที่แท้จริงของคุณ คุณจะบอกกรรมวิธีการโหลด หากคุณใช้ requirejs จะมีปลั๊กอินกรรมและจำเป็นต้องมีการกำหนดค่าบางอย่าง
(2) การทดสอบเหล่านั้นสามารถเขียนในกรอบการทดสอบ Javascript ที่หลากหลาย (จัสมิน, QUnit, มอคค่า) นี่คือรหัส JS ที่ทำงานในเบราว์เซอร์
(3) หน้าเว็บที่กำหนดเองจะแตกต่างกันเล็กน้อยสำหรับแต่ละเฟรมเวิร์กการทดสอบ นี่คือเหตุผลที่กรรมมีปลั๊กอินสำหรับกรอบงานที่แตกต่างกัน
(4) Karma สามารถเปิดหน้าในเบราว์เซอร์จำนวนมาก (FF, Chrome หรือเบราว์เซอร์ที่ไม่มีหัวเช่น PhantomJs)
(5) การรายงานไปยังกรรมเป็นอีกครั้งขึ้นอยู่กับกรอบและจัดการกับปลั๊กอินกรรม
ดังนั้นเพื่อตอบคำถามของคุณ:
- ใน Java คนส่วนใหญ่ใช้ JUnit ซึ่งเป็นทั้งเฟรมเวิร์กในการเขียนการทดสอบและรัน แต่ไม่ได้มีปัญหาในการสร้างความแตกต่างของสภาพแวดล้อมที่การทดสอบรัน กรรมจะเป็นชิ้นส่วนที่ขาดหายไประหว่าง JUnit Suite และ JUnit TestRunner
- ใช่คุณสามารถทำทุกอย่างที่กรรมทำ "ด้วยมือ" - เลือกหนึ่งเฟรมเวิร์ก (จัสมิน, qunit, มอคค่า) และทำตามคำแนะนำ ข้อดีของกรรมคือมันให้ทางออกนอกกรอบหากคุณอยู่ในการตั้งค่ามาตรฐาน
- Karma สามารถใช้สำหรับการทดสอบทั้งหน่วย (ด้วยจัสมิน / qunit / อะไรก็ตาม) และการทดสอบการรวม (ซึ่งจะใช้ API อื่นเช่น webdriver เพื่อขับเบราว์เซอร์)