ฉันมีวิธีการเช่นนี้ในชั้นพื้นที่เก็บข้อมูลของฉัน:
public IEnumerable<User> GetActiveUsers()
{
return dbContext.Users
.Where(u => u.IsActive)
.OrderBy(u => u.Name)
.ToList();
}
ฉันควรทดสอบวิธีนี้ด้วยการเยาะเย้ย DbContext
หรือฉันควรทดสอบกับฐานข้อมูลจริงหรือไม่
ฉันรู้ว่ามันหยุดเป็นการทดสอบ "หน่วย" เมื่อฉันใช้ฐานข้อมูลจริง แต่ฉันไม่เห็นค่าในการเยาะเย้ย DbContext
เพื่อทดสอบวิธีการเก็บข้อมูลของฉันซึ่งมีตรรกะบางเฉียบและมักจะเรียกวิธีการของ EF โดยตรง
และหากฉันต้องใช้ฐานข้อมูลจริง มีกลยุทธ์มาตรฐานใดบ้างในการเติมข้อมูลทดสอบลงในฐานข้อมูล เพื่อให้การทดสอบทำงานอย่างเป็นอิสระและไม่เปลี่ยนแปลงสถานะใดๆ ในฐานข้อมูล