2015-09-24 6 views
0

У меня есть единичный тест для действия 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); 
} 

ответ

1

недопустимое имя объекта «dbo.Projects». является исключением из sql-сервера. Это означает, что ваша таблица не существует в схеме dbo.

Убедитесь, что вы подключены к правильной базе данных и что миграции были выполнены.

+0

Это действительно в моей базе данных, и схема верна. Если я остановлюсь через метод actionresult контроллеров, он отлично работает, только когда я запускаю модульный тест, он дает эту ошибку. У меня такое ощущение, что модульный тест или EF что-то делает для моей модели dbcontext, может быть? –

+0

Проверьте строку подключения в app.config в тестовом проекте –

+0

ах да! Большое спасибо! Это отвечает на мою проблему. –