У меня есть единичный тест для действия actionresult. Когда я запускаю модульный тест, он разбивается на db.SaveChanges();
часть результата действия. Когда я тестирую фактический метод (через веб-браузер и данные в базе данных), это хорошо, однако, когда я запускаю свой модульный тест, он терпит неудачу. Ошибка, которую я получаю: DbUpdateException не был обработан кодом пользователя. См внутреннее исключение, внутреннее исключение: {"Invalid object name 'dbo.Projects'."}
Я использую entityframeworks codefirst структуры и вот мой код:Недопустимое имя объекта, даже если объект действителен
[ValidateAntiForgeryToken]
[Authorize(Roles = "A")]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult AddProject(Projects project)
{
if (ModelState.IsValid)
{
using (var db = new MyDbContext())
{
db.ProjectModels.Add(project);
db.SaveChanges();
}
return RedirectToAction("ListOfProjects", "Project");
}
return View(project);
}
[TestMethod()]
public void AddProjectTestWithModl()
{
var controller = new AdminController();
var model = new Projects() { Name = "Name", Description = "Desc", Duration = "1 month" };
var result = controller.AddProject(model) as ViewResult;
Assert.AreEqual(model, result.ViewData.Model);
}
Это действительно в моей базе данных, и схема верна. Если я остановлюсь через метод actionresult контроллеров, он отлично работает, только когда я запускаю модульный тест, он дает эту ошибку. У меня такое ощущение, что модульный тест или EF что-то делает для моей модели dbcontext, может быть? –
Проверьте строку подключения в app.config в тестовом проекте –
ах да! Большое спасибо! Это отвечает на мою проблему. –