Только начал изучать и писать блок тестирования день назад, так что это, вероятно, слишком простой вопрос:Модульное тестирование, если метод создания записи в базе данных
У меня есть этот метод в моем DBTaskHanlder
классе, который я хочу сделать некоторые единица, я был в состоянии написать один для того, когда ModelState не действует, но теперь для следующего:
public bool CreateTask(ForgotPasswordViewModel fpModel)
{
if (!ModelState.IsValid)
{
return false;
}
try
{
CreateTaskFromModel(fpModel);
_dbContext.SaveChanges();
return true;
}
catch (Exception e)
{
var issue = e.ToString();
throw;
}
}
это CreateTaskFromModel
является private
метод и хорошо называется его работа, чтобы создать новую строку в базе данных на столе , Итак, я хотел проверить, когда этот метод вызывается, создается ли одна новая строка в БД? Действительно ли это правильная вещь для тестирования? Как проверить? Я не думаю, что мы должны ударить и вставить в настоящую базу данных?
private void CreateTaskFromModel(ForgotPasswordViewModel fpModel)
{
var message = _dbContext.Create<Message>();
message.MessageType = "TASK".PadLeft(10);
message.Assigned_User_K = fpModel.SendPasswordRequestTo.Trim();
message.Assigned_Date = DateTime.Today;
message.Source_User_K = string.Empty;
message.Target_File_K = "WEBCFGPHRM";
message.Owner_User_K = string.Empty;
message.Message_K = _keyGenerator.Get10ByteBase36Key();
_dbContext.Messages.Add(message);
}
Это правильная вещь для проверки, но ее не следует называть «модульным тестом» в этот момент - «интеграционный тест» будет лучшим названием. См. Http://stackoverflow.com/questions/10752/what-is-the-difference-between-integration-and-unit-tests –