ผลต่างระหว่างรุ่นของ "Afgu/unit testing 1"
Jittat (คุย | มีส่วนร่วม) |
Jittat (คุย | มีส่วนร่วม) |
||
แถว 29: | แถว 29: | ||
== ตัวอย่าง == | == ตัวอย่าง == | ||
+ | เราต้องการเขียนฟังก์ชัน | ||
+ | |||
+ | function cirIntersect(x1, y1, r1, x2, y2, r2) { | ||
+ | } | ||
+ | |||
+ | ที่รับข้อมูล | ||
+ | |||
+ | * วงกลมวงแรก ที่มีจุดศูนย์กลางที่ตำแหน่ง (x1,y1) รัศมี r1 และ | ||
+ | * วงกลมวงที่สอง ที่มีจุดศูนย์กลางที่ตำแหน่ง (x2,y2) รัศมี r2 | ||
+ | |||
+ | จากนั้นคืนค่า | ||
+ | |||
+ | * true ถ้าวงกลมทั้งสองวงมีเส้นรอบวงที่ตัดกันหรือสัมผัสกัน (ถ้าวงกลมที่ซ้อนกันไม่นับ) | ||
+ | |||
+ | === กรณีต่าง ๆ === | ||
+ | |||
+ | สมมติว่ามีคนเขียนฟังก์ชันดังกล่าวมาให้เรา เราจะ "ทดสอบ" อะไรบ้าง ที่ทำให้เราเชื่อได้ว่าฟังก์ชันดังกล่าวทำงานได้ถูกต้อง? | ||
== สิ่งที่ต้องใส่ใจ == | == สิ่งที่ต้องใส่ใจ == | ||
== แบบฝึกหัด == | == แบบฝึกหัด == |
รุ่นแก้ไขเมื่อ 11:41, 10 พฤศจิกายน 2556
เราใช้หัดเขียน unit test บน java script ซึ่งเป็นภาษาที่ทุกคนน่าจะสามารถเรียกให้ทำงานได้ ในครั้งแรกเราจะเน้นให้เข้าใจว่า unit test คืออะไร และสามารถเขียน unit test แบบทั่วไปได้ ในครั้งถัด ๆ ไปเราจะศึกษาเทคนิคเพิ่มเติมเช่นการทำ isolation รวมไปถึงการเขียน unit test ที่ดี
เราสามารถทำ unit testing ได้โดยไม่ต้องใช้ framework ใด ๆ เลยก็ได้ แต่ในที่นี้เราจะใช้ mocha เป็น framework mocha รองรับไลบรารีการ assert/expect ได้หลายแบบ เราเลือกใช้ chai นอกจากนี้ mocha ยังต้องการใช้ jquery ในการแสดงผล เราจึงต้องเรียก jquery ด้วย
ไลบรารีที่ใช้:
ที่เราเลือกใช้ mocha และ Chai นั้นเป็นตามรสนิยมผู้สอน ในการใช้งานจริง แนะนำให้เลือกไลบรารี/เฟรมเวิร์คที่ชอบตามสะดวก
โครงสร้างไดเร็กทอรี
ในแต่ละตัวอย่างและแบบฝึกหัดที่เราจะเขียน เราจะใช้โครงสร้างไดเร็กทอรีดังนี้
- project/ - *.js (ไฟล์ js ของ project) - test/ - index-test.html - test.js (เก็บโค้ดสำหรับ test) - lib/ - mocha.js - mocha.css - chai.js - jquery.js
สามารถดาวน์โหลด template ดังกล่าวได้: project.tgz, project.zip และเปลี่ยนชื่อไดเร็กทอรีตามความเหมาะสม
ตัวอย่าง
เราต้องการเขียนฟังก์ชัน
function cirIntersect(x1, y1, r1, x2, y2, r2) { }
ที่รับข้อมูล
- วงกลมวงแรก ที่มีจุดศูนย์กลางที่ตำแหน่ง (x1,y1) รัศมี r1 และ
- วงกลมวงที่สอง ที่มีจุดศูนย์กลางที่ตำแหน่ง (x2,y2) รัศมี r2
จากนั้นคืนค่า
- true ถ้าวงกลมทั้งสองวงมีเส้นรอบวงที่ตัดกันหรือสัมผัสกัน (ถ้าวงกลมที่ซ้อนกันไม่นับ)
กรณีต่าง ๆ
สมมติว่ามีคนเขียนฟังก์ชันดังกล่าวมาให้เรา เราจะ "ทดสอบ" อะไรบ้าง ที่ทำให้เราเชื่อได้ว่าฟังก์ชันดังกล่าวทำงานได้ถูกต้อง?