पर निर्भर करता है मेरे पास निम्न सहायक विधि है, जो DbEntityValidationException से सत्यापन संदेश लेता है। हमें इसकी आवश्यकता है क्योंकि सत्यापन के विवरण डिफ़ॉल्ट रूप से अपवाद में नहीं जोड़े जाते हैं।किसी ऑब्जेक्ट के लिए यूनिट टेस्ट कैसे बनाएं जो DbEntityEntry
public static string LogMessageDbEntityValidationException(DbEntityValidationException ex)
{
StringBuilder error = new StringBuilder();
error.AppendLine("Validation Error details for DbEntityValidationException throw: ");
foreach (var validationErrors in ex.EntityValidationErrors)
{
foreach (var validationError in validationErrors.ValidationErrors)
{
error.AppendLine(string.Format("Property: {0} , Error: {1}",
validationError.PropertyName, validationError.ErrorMessage));
}
}
return error.ToString();
}
मैं एक मुद्दा यूनिट टेस्ट बनाने का प्रयास कर आई है, विशेष रूप से मैं एक DbEntityValidationResult नहीं बना सकते क्योंकि यह DbEntityEntry, जो एक सार्वजनिक निर्माता नहीं है का एक उदाहरण की आवश्यकता है।
यहाँ टूट गया है यूनिट टेस्ट, यह DbEntityEntry बनाने पर विफल रहता है:
public void LogMessageDbEntityValidationExceptionTest()
{
string errorMessage = "Unit Test Error Message";
string expected = "Not valid data.";
List<DbEntityValidationResult> entityValidationResults = new List<DbEntityValidationResult>();
List<DbValidationError> errorList = new List<DbValidationError>();
DbEntityValidationException ex;
errorList.Add(new DbValidationError("TestProperty", expected));
entityValidationResults.Add(new DbEntityValidationResult(new System.Data.Entity.Infrastructure.DbEntityEntry(), errorList));
ex = new DbEntityValidationException(errorMessage, entityValidationResults);
string actual = Common.LogMessageDbEntityValidationException(ex);
Assert.IsTrue(actual.Contains(expected));
}
ध्यान दें, DbEntityEntry एक इंटरफ़ेस को लागू नहीं करता है, तो मैं एक नकली/नकली उपयोग नहीं कर सकते।
क्या आपको कभी इस समस्या का समाधान मिला है? – user1535568