คำถามติดแท็ก asp.net-core

15
เราควรออกแบบรหัสของเราตั้งแต่ต้นเพื่อเปิดใช้การทดสอบหน่วยหรือไม่
มีการถกเถียงกันในทีมของเราในขณะนี้ว่าการปรับเปลี่ยนการออกแบบรหัสเพื่อให้การทดสอบหน่วยเป็นกลิ่นรหัสหรือในระดับที่สามารถทำได้โดยไม่ต้องมีกลิ่นรหัส สิ่งนี้เกิดขึ้นเพราะเราเพิ่งเริ่มวางแนวทางปฏิบัติที่มีอยู่ใน บริษัท พัฒนาซอฟต์แวร์อื่น ๆ โดยเฉพาะเราจะมีบริการ Web API ที่จะบางมาก ความรับผิดชอบหลักของมันคือการจัดการคำขอ / ตอบกลับเว็บและเรียก API พื้นฐานที่มีตรรกะทางธุรกิจ ตัวอย่างหนึ่งคือเราวางแผนที่จะสร้างโรงงานที่จะคืนค่าประเภทวิธีการตรวจสอบสิทธิ์ เราไม่จำเป็นต้องให้อินเทอร์เฟซสืบทอดเนื่องจากเราไม่ได้คาดหวังว่ามันจะเป็นสิ่งอื่นนอกเหนือจากรูปแบบที่เป็นรูปธรรม อย่างไรก็ตามหากต้องการทดสอบบริการ Web API เราจะต้องจำลองโรงงานนี้ นี่หมายถึงว่าเราออกแบบคลาสคอนโทรลเลอร์ API ของเว็บเพื่อยอมรับ DI (ผ่าน Constructor หรือ Setter) ซึ่งหมายความว่าเราออกแบบส่วนของคอนโทรลเลอร์เพียงเพื่อให้ DI และใช้อินเตอร์เฟสที่เราไม่ต้องการหรือเราใช้ เฟรมเวิร์กของบุคคลที่สามอย่าง Ninject เพื่อหลีกเลี่ยงการออกแบบคอนโทรลเลอร์ในลักษณะนี้ แต่เราจะต้องสร้างอินเทอร์เฟซ บางคนในทีมดูเหมือนไม่เต็มใจที่จะออกแบบรหัสเพื่อการทดสอบ ดูเหมือนว่าฉันจะต้องมีการประนีประนอมบางอย่างถ้าคุณหวังว่าจะทดสอบหน่วย แต่ฉันไม่แน่ใจว่าบรรเทาความกังวลของพวกเขาอย่างไร เพื่อให้ชัดเจนนี่คือโครงการใหม่ล่าสุดดังนั้นจึงไม่ได้เกี่ยวกับการแก้ไขโค้ดเพื่อเปิดใช้งานการทดสอบหน่วย มันเกี่ยวกับการออกแบบโค้ดที่เราจะเขียนให้ทดสอบได้

5
ฉันควรตรวจสอบว่ามีบางสิ่งบางอย่างใน db และล้มเหลวอย่างรวดเร็วหรือรอข้อยกเว้น db
มีสองคลาส: public class Parent { public int Id { get; set; } public int ChildId { get; set; } } public class Child { ... } เมื่อกำหนดChildIdให้Parentฉันควรตรวจสอบก่อนว่ามันมีอยู่ในฐานข้อมูลหรือรอให้ฐานข้อมูลเกิดข้อยกเว้นหรือไม่ ตัวอย่างเช่น (ใช้ Entity Framework Core): หมายเหตุการตรวจสอบประเภทนี้มีอยู่ทั่วอินเทอร์เน็ตแม้ในเอกสารอย่างเป็นทางการของ Microsoft: https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using- mvc / handling-concurrency-with-the-entity-framework-in-an-asp-net-mvc-application # modified-the-department-controllerแต่มีการจัดการข้อยกเว้นเพิ่มเติมสำหรับSaveChanges นอกจากนี้โปรดทราบว่าจุดประสงค์หลักของการตรวจสอบนี้คือการส่งคืนข้อความที่เป็นมิตรและสถานะ HTTP ที่เป็นที่รู้จักแก่ผู้ใช้ API และไม่ละเว้นข้อยกเว้นฐานข้อมูลอย่างสมบูรณ์ และยกเว้นสถานที่เดียวที่จะถูกโยนอยู่ภายในSaveChangesหรือSaveChangesAsyncโทร ... ดังนั้นจะไม่มีข้อยกเว้นใด ๆ เมื่อคุณโทรหรือFindAsync …

2
ข้อมูลใดที่ควรเก็บไว้เป็น "อ้างสิทธิ์"
ใน ASP.Net Core ฉันพบว่าการClaimsอนุญาตเป็นวิธีที่ไม่เป็นรูปธรรมมาก เราสามารถเพิ่มอะไรก็ได้ClaimTypeและClaimValueจับคู่; กลุ่ม, ชื่อ, นามสกุล, brithdate, canAccessThisURI, isEditor, ฯลฯ อย่างไรก็ตามวิธีการนี้ (การจัดเก็บสิ่งที่สามารถจัดเก็บเป็นสิทธิเรียกร้อง) จะทำให้ตารางการเรียกร้องจำนวนมากซึ่งรวมถึง 50% ของข้อมูลแอปพลิเคชันของฉัน ฉันสงสัยว่าเป็นวิธีปฏิบัติที่ดีข้อมูลทั่วไปที่ควรจัดเก็บเป็นการอ้างสิทธิ์คืออะไร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.