Кодеры, я нахожусь в процессе написания тестовых примеров для проекта Asp.net MVC 3, и мне нужно вызвать метод действия, который вставляет данные в базу данных, используя Entity Framework. Вот код для метода действия:
//
// POST: /School/Create
[HttpPost]
public ActionResult Create(School school)
{
if (ModelState.IsValid)
{
db.Schools.Add(school);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(school);
}
А вот код для моего метода испытаний:
[TestMethod]
public void CreateNewSchool()
{
var schoolController = new SchoolController();
var viewResult = schoolController.Index();
//creating a school object
School school = new School();
school.Name = "OOO";
//passing the school object to the action method
schoolController.Create(school);
//making sure that the model is not null
Assert.IsNotNull(viewResult.Model);
}
Однако обратите внимание, что я не проверяю, были ли данные фактически вставлены в базу данных. Я просто проверяю, что модель представления не является нулевой. Я проверяю базу данных вручную, используя SQL Server Management Studio.
Проблема в том, что когда я вызываю метод действия в тестовом методе для создания / вставки записи в базу данных, с базой данных ничего не происходит. Однако, если я запускаю приложение и просматриваю страницу создания и пытаюсь создать новую запись, запись будет добавлена в базу данных. Поэтому мне кажется, что вставка в базу данных происходит только в том случае, если я запускаю приложение и на самом деле просматриваю страницу создания и нажимаю кнопку «Создать», но я не могу программно вызвать метод действия в методе test для вставки новой записи в базу данных. Я также отладил контрольный пример, и он попал в db.SaveChanges (); строка в методе действия, но в базе данных не было отражено никаких изменений.
Итак, кто-то может объяснить мне, почему я не могу вставить запись, вызвав метод действия в моем методе тестирования?
Заранее спасибо.