วิธีทดสอบรหัสรวมใน Swift
การทดสอบโค้ดของเราเป็นส่วนสำคัญของกระบวนการพัฒนา
แต่ถ้าเราใช้กรอบงาน Combine นี่อาจดูไม่เป็นธรรมชาติตั้งแต่แรกเห็น ไม่ได้หมายความว่าจะทำไม่ได้ เราเพียงแค่ต้องเจาะลึกแนวคิดขั้นสูงเพิ่มเติมที่ Swift มอบให้เรา
มาดูวิธีที่เราสามารถรวมการทดสอบหน่วยในรหัสรวมของเราได้อย่างง่ายดาย
เริ่มต้นด้วยการดูผู้จัดการต่อไปนี้ซึ่งจำลองการจัดการสัญญาณไฟจราจร
จากบทความรวมเริ่มต้นของเรา เรารู้ว่าการเพิ่ม @Published wrapper ทำให้เราได้รับ Publisher ฟรีที่เราสามารถเข้าถึงได้โดยใช้อักขระ $
การทดสอบ
ก่อนที่เราจะลงลึกถึงวิธีทดสอบรหัสรวม เรามาทบทวนแนวคิดหลักบางประการเกี่ยวกับการทดสอบหน่วยกันก่อน เราสามารถสรุปได้เป็นสามขั้นตอน
- ขั้นตอนที่ 1: กำหนดสิ่งที่คุณต้องการทดสอบ
- ขั้นตอนที่ 2: ดำเนินการที่คุณต้องการทดสอบด้วยค่าที่คุณกำหนดไว้ในขั้นตอนที่ 1
- ขั้นตอนที่ 3: ประเมินผลลัพธ์ที่คุณได้รับจากขั้นตอนที่ 2
นี่เป็นตัวอย่างง่ายๆ เพื่อให้คุณเข้าใจแนวคิด ก่อนอื่นเรากำหนดค่าที่คาดหวังสำหรับการทดสอบซึ่งเป็นไฟสีแดง จากนั้น เราเรียกการดำเนินการที่เปลี่ยนค่าแสงปัจจุบันเป็นสีแดง และสุดท้าย เราตรวจสอบให้แน่ใจว่าค่าของแสงปัจจุบันเท่ากับค่าที่คาดไว้
ไม่เป็นไร แต่เราควรทำอย่างไรหากต้องการทดสอบsimulateFlow
ฟังก์ชัน คุณสามารถสังเกตได้ว่าภายในฟังก์ชันนั้นเรากำลังเปลี่ยนคุณสมบัติแสงสามครั้ง ดังนั้น เมื่อสิ้นสุดการทำงานของฟังก์ชัน ค่าของคุณสมบัติควรเปลี่ยนจากสีเขียวเป็นสีเหลือง จากสีเหลืองเป็นสีแดง และสุดท้ายจากสีแดงเป็นสีเขียว
อย่างที่คุณจินตนาการได้ ในการทดสอบฟังก์ชัน เราต้องแน่ใจว่าค่าของคุณสมบัตินั้นมีค่าที่ถูกต้องในตอนท้าย แต่ที่สำคัญที่สุด เราต้องแน่ใจว่าการเปลี่ยนแปลงค่าทั้งหมด (จากค่าหนึ่งไปยังอีกค่าหนึ่ง) นั้นถูกต้อง .
ความคาดหวัง
XCTestExpectations เป็นประเภทของวัตถุที่ Apple มอบให้เราสำหรับการทดสอบโค้ดแบบอะซิงโครนัส โดยพื้นฐานแล้ว คุณสร้างความคาดหวังเมื่อเริ่มต้นการทดสอบ และเมื่อตรงตามเงื่อนไขบางอย่าง คุณก็ปฏิบัติตามความคาดหวังนั้น การดำเนินการทดสอบจะรอจนกว่าความคาดหวังจะสำเร็จหรือเมื่อหมดเวลา
ดังนั้น เพื่อทดสอบฟังก์ชันของเรา เราจะต้องรอจนกว่าเราจะรวบรวมค่าที่คาดหวังทั้งหมดที่เรารู้ว่าcurrentLight
คุณสมบัติควรเปลี่ยนแปลง จากนั้นเราจะตอบสนองความคาดหวังหากเรามีค่าทั้งหมด มิฉะนั้น การทดสอบจะล้มเหลวเนื่องจากการหมดเวลา
ด้วยเหตุนี้ เราจึงมีเครื่องมือที่เหมาะสมในการสร้างการทดสอบใหม่สำหรับsimulateFlow
ฟังก์ชัน ของเรา
มาแจกแจงรหัส:
ขั้นตอนที่ 1
- เราสร้างความคาดหวังใหม่เพื่อใช้ในการทดสอบของเรา
- เรากำหนดค่าที่คาดไว้ซึ่งเรารู้ว่าคุณสมบัติควรเปลี่ยนแปลงในบางจุด
- นอกจากนี้ เรายังสร้างรายการว่างใหม่ที่เราจะใช้เพื่อเก็บค่าที่เราจะได้รับจาก Publisher
- เราเริ่มฟังค่านิยมของสำนักพิมพ์
- เราเรียกใช้ฟังก์ชันเพื่อให้เราเริ่มรับการเปลี่ยนแปลงค่าของคุณสมบัติ
- เรารอความคาดหวังว่าจะสำเร็จหรือหมดเวลา
- เราประเมินว่าค่าที่ได้รับที่เราได้รับนั้นถูกต้องหรือไม่
การทดสอบรหัสรวมนั้นค่อนข้างง่ายเมื่อคุณเข้าใจศักยภาพของความคาดหวัง แม้ว่าเราจะเห็นตัวอย่างสั้นๆ และเรียบง่าย แต่คุณสามารถใช้เทคนิคเดียวกันนี้ในการทดสอบโซลูชันที่ซับซ้อนมากขึ้นได้
ตัวอย่างเช่น คุณสามารถใช้หลักการเหล่านี้เพื่อทดสอบสถานะของ ViewModel ในสถาปัตยกรรม MVVM หรือเพื่อทดสอบการเรียกเครือข่ายที่ล้อเลียน
คุณอาจต้องการตรวจสอบบทความก่อนหน้าของฉันเกี่ยวกับ Combine
รู้เบื้องต้นเกี่ยวกับกรอบการรวมใน Swifthttps://blorenzop.medium.com/form-validation-with-combine-4988adcc3b0
มีคำถามใดๆ? อย่าลังเลที่จะส่งข้อความถึงฉัน หากคุณชอบเนื้อหาของฉัน คุณสามารถสมัครสมาชิกหน้าสื่อของฉันเพื่อรับการแจ้งเตือนโดยตรงในกล่องจดหมายของคุณทุกครั้งที่ฉันเผยแพร่บทความใหม่
หากคุณต้องการสนับสนุนฉัน คุณสามารถติดตามฉันได้ที่GitHubหรือTwitter