Я читал о TDD, и я видел много сообщений о том, чтобы не делать транзакций с базой данных, потому что «одиночный изолированный блок кода без зависимостей».TDD Вставка в базу данных
Итак, теперь у меня есть немного дилеммы - я хочу проверить, действительно ли работает мой метод уровня обслуживания AddNewStudent
. Этот метод переходит в мой DbContext
, а затем добавляет новую запись в базу данных. Если операции с базами данных не рекомендуются для TDD, то как еще я могу протестировать метод AddNewStudent
, кроме как просто проверить мое приложение в браузере?
public class StudentManager : ManagerBase
{
internal StudentManager() { }
public Student AddNewStudent(string fName, string lName, DateTime dob)
{
// Create a student model instance using factory
var record = Factories.StudentFac.CreateOne(fName, lName, dob);
DbContext.Students.Add(record);
DbContext.SaveChanges();
return record;
}
}
И мой тест выглядит так
[TestMethod]
public void StudentManager_AddNewStudent_Test()
{
var fName = "Ryan";
var lName = "Rigil";
var dob = DateTime.Parse("3/1/2006");
var student = Managers.StudentManager.AddNewStudent(fName, lName, dob);
Assert.AreEqual(fName, student.FirstName);
Assert.AreEqual(lName, student.LastName);
Assert.AreEqual(dob.ToShortDateString(), student.DoB.ToShortDateString());
}
Создайте абстракцию своего DbContext, который вы можете объединить в своих модульных тестах, чтобы проверить тестируемый метод. – Nkosi
Откуда берется «DbContext»? Это Entity Framework? В какой единичной структуре тестирования вы используете (т. Е. NUnit)? Можем ли мы увидеть какой-либо пример кода, показывающий, что вы хотите издеваться/тестировать? –
Добавлен пример кода выше –