Как создать модульный тест для объекта, который зависит от DbEntityEntryC#

Место общения программистов C#
Ответить
Anonymous
 Как создать модульный тест для объекта, который зависит от DbEntityEntry

Сообщение Anonymous »

У меня есть следующий вспомогательный метод, который извлекает сообщения проверки из исключения DbEntityValidationException. Нам это нужно, потому что подробности проверки не добавляются в исключение по умолчанию.

Код: Выделить всё

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();
}
Я столкнулся с проблемой при создании Unit Test, в частности, я не могу создать DbEntityValidationResult, поскольку для этого требуется экземпляр DbEntityEntry, у которого нет общественный конструктор.

Вот неработающий модульный тест, он не работает при создании DbEntityEntry:

Код: Выделить всё

public void LogMessageDbEntityValidationExceptionTest()
{
string errorMessage = "Unit Test Error Message";
string expected = "Not valid data.";
List entityValidationResults = new List();
List errorList = new List();
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 не реализует интерфейс, поэтому я не могу использовать макет/подделку.

Подробнее здесь: https://stackoverflow.com/questions/266 ... ntityentry
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»