ผลต่างระหว่างรุ่นของ "Afgu/unit testing 2"
ไปยังการนำทาง
ไปยังการค้นหา
Jittat (คุย | มีส่วนร่วม) |
Jittat (คุย | มีส่วนร่วม) |
||
แถว 47: | แถว 47: | ||
==== แยก dependencies ==== | ==== แยก dependencies ==== | ||
− | ==== stubs ==== | + | ==== stubs/mocks/test spies ==== |
− | + | เราจะใช้ [http://sinonjs.org/ Sinon.JS] ซึ่งเป็น '''test spie/test stub library''' ในการทดลองเขียน | |
− | |||
− | เราจะใช้ [http://sinonjs.org/ Sinon.JS] ซึ่งเป็น '''test |
รุ่นแก้ไขเมื่อ 09:22, 18 พฤศจิกายน 2556
- หน้านีเป็นส่วนหนึ่งของชุดแบบฝึกหัด Agile from the ground up
เนื้อหา
เนื้อหา
ใช้ของเก่าหากินหน่อยครับ เอกสารมาจาก01219343-55
- การหา test cases / test examples
- Slides: Good unit tests
- Testing dependent units: stubs, mocks, spies
- Slides: Testing units with dependencies
- Links:
- Mocks aren't stubs by Martin Fowler
- Mocks, Fakes, Stubs and Dummies -- terminologies of various test doubles.
แบบฝึกหัด
หา examples
- แบ่งกลุ่ม ใช้ script ที่แจกให้ห้อง (ต้นฉบับจะมาแปะที่นี่ต่อไป)
Isolation
สมมติว่าเราต้องการจะเขียนฟังก์ชัน
function popularSpell(words) {
}
ที่นำอาร์เรย์ของสตริง words ไปค้นใน Google แล้วนับจำนวน แล้วคืนคำที่มีจำนวนผลลัพธ์การค้นมากที่สุด
โค้ดของฟังก์ชันดังกล่าวอาจจะมีขั้นตอนประมาณดังด้านล่าง
function popularSpell(words) {
// 1. for each word w, do
// 2. generate google query url for w
// 3. make a request to google, get the result content
// 4. extract the number of results from the content
// 5. update the word with the maximum number
}
คำถามคือเราจะ test function ดังกล่าวได้อย่างไร?
ถามกลับกันคือ จากฟังก์ชันดังกล่าว มีอะไรเป็น อุปสรรค ในการ test ฟังก์ชันดังกล่าวบ้าง?
แยก dependencies
stubs/mocks/test spies
เราจะใช้ Sinon.JS ซึ่งเป็น test spie/test stub library ในการทดลองเขียน