การเยาะเย้ยการทดสอบหน่วย iOS โดยใช้การเยาะเย้ยอย่างรวดเร็ว
Swift ได้รับการออกแบบมาให้มีความปลอดภัย — รองรับการสะท้อนแบบอ่านอย่างเดียว ดังนั้นจึงไม่มีวิธีแก้ไขโปรแกรมของคุณในขณะรันไทม์ โดยรวมถือว่าดี รันโค้ดตามที่คาดไว้ และส่วนประกอบอื่นๆ ไม่สามารถเปลี่ยนแปลงได้ แต่ย้อนกลับไปที่หัวข้อของเรา กรอบการเยาะเย้ยทั้งหมดสร้างขึ้นจากการสะท้อนเพื่อให้สามารถเปลี่ยนคลาส ประเภท และอ็อบเจกต์บนรันไทม์ได้
ภาษานี้ต้องการฮีโร่ในการเขียนโค้ดที่สามารถทดสอบได้ และเรารู้จักพวกเขาดี — โปรโตคอลและส่วนขยาย! ไม่ว่าจะใช้งานแบบใด — class, enum หรือ struct — จุดประสงค์ของโปรโตคอลยังคงอยู่ — เพื่อกำหนดสิ่งที่เป็นนามธรรมและเพิ่มฟังก์ชันการทำงานใหม่ให้กับประเภท แม้แต่สิ่งที่เราไม่ได้เป็นหนี้
เราสามารถทำอะไรเพื่อเยาะเย้ย?
ใช้การเขียนโปรแกรมเมตาเพื่อสร้างการใช้งานจำลองที่สมบูรณ์
พวกเขาเป็นห้องสมุดหลายแห่งที่ทำงานจำลองสำหรับการทดสอบหน่วย ต้นไม้ชนิดหนึ่งส่วนใหญ่เป็นCuckooและswifyMocky
ในบทความนี้ ฉันจะให้ภาพรวมเกี่ยวกับวิธีที่เราจะทำการเยาะเย้ยโดยใช้SwiftyMocky
SwiftyMocky
https://github.com/MakeAWishFoundation/SwiftyMocky
ข้อดี
- จำลองโปรโตคอล Swift โดยอัตโนมัติ
- สนับสนุนยาสามัญ
- การตั้งค่าที่ตรงไปตรงมาและน้ำหนักเบา
- เอกสารที่ดี
- ไวยากรณ์ที่ดีและใช้งานง่าย (ที่ใช้การเติมข้อความอัตโนมัติ)
- ทำเครื่องหมายโปรโตคอลที่จะล้อเลียน
- ทุกโปรโตคอลในไดเร็กทอรีต้นทางที่มีคำอธิบายประกอบนี้ จะถูกเพิ่มไปยัง Mock.generated.swift
- ม็อคทั้งหมดมีเมธอด (เข้าถึงได้ทั้งเมธอดอินสแตนซ์หรือโกลบอลฟังก์ชัน) พร้อมไวยากรณ์ที่ใช้งานง่าย อนุญาตให้ระบุสิ่งที่ควรส่งคืนค่าสำหรับเมธอดที่กำหนด (ตามแอตทริบิวต์ที่ระบุ)
- ม็อคทั้งหมดมีเมธอดการยืนยัน (เข้าถึงได้ทั้งเมธอดอินสแตนซ์หรือโกลบอลฟังก์ชัน) พร้อมไวยากรณ์ที่ใช้งานง่าย ช่วยให้ตรวจสอบได้ว่าเมธอดถูกเรียกเมื่อจำลองหรือไม่ และกี่ครั้ง นอกจากนี้ยังมีวิธีที่สะดวกในการระบุว่าแอตทริบิวต์เมธอดมีความสำคัญหรือไม่ (และรายการใด)
- การจำลองทั้งหมดมีวิธีการดำเนินการ (เข้าถึงได้ทั้งในรูปแบบอินสแตนซ์หรือฟังก์ชันส่วนกลาง) พร้อมไวยากรณ์ที่ใช้งานง่าย อนุญาตให้ระบุการปิดซึ่งจะถูกดำเนินการเมื่อเรียกวิธีการที่ถูกตัด
ติดตั้ง
- ติดตั้งโดยใช้ Cocoapods
- ติดตั้ง CLI เพื่อการสร้างแบบจำลองอย่างง่าย
> แพทย์ที่รวดเร็ว # ตรวจสอบการตั้งค่าของคุณ
> swiftymocky สร้าง # สร้าง mocks
- การสร้าง Mocks ขึ้นอยู่กับไฟล์ Mockfile.yml ที่มีความเป็นไปได้ที่จะแยกกฎ swift lint โดยใช้excludSwiftLintRules
ในฐานะนักพัฒนา เรามีเครื่องมือไม่มากนักสำหรับล้อเลียน Swift โดยมีขอบเขตที่เข้มงวดเนื่องจากการเข้าถึงรันไทม์ที่จำกัดของภาษา และที่นี่เรามาถึงคำถามที่สำคัญ — ใช้หรือไม่ใช้เฟรมเวิร์กภายนอกเพื่อเยาะเย้ย
ลุงบ็อบผู้เป็นที่รู้จักกันดีไม่ได้ใช้มันมากเท่าที่จะเป็นไปได้ เขากล่าวว่า: “จุดที่คุณเริ่มต้องการเฟรมเวิร์กจำลองคือจุดที่การเชื่อมต่อระหว่างการทดสอบและโค้ดของคุณสูงเกินไป อย่างไรก็ตาม หลังจากนั้น คุณควรพยายามรักษาการเชื่อมต่อระหว่างโค้ดและการทดสอบให้ต่ำพอที่คุณไม่จำเป็นต้องใช้เฟรมเวิร์กจำลองบ่อยนัก”
ขอบคุณสำหรับการอ่าน! หากคุณชอบบทความนี้ โปรดปรบมือ เพื่อให้คนอื่นได้อ่านเช่นกัน :)
มีความสุขในการเขียนโค้ด :v: