Итак, я смущен этой неудачей.Я использую MSTest для запуска некоторых интеграционных тестов (поскольку есть БД, поддерживающая это, я думаю, мы бы назвали это так, а не модульное тестирование) и у меня есть такой метод тестирования:
[TestMethod()]
[ExpectedException(typeof(DbUpdateException))]
public void AddRecipe_InvalidCookingMethod_ExpectExceptionThrown()
{
var target = GetRepository();
var recipe = new Recipe()
{
Method = "Sous-vide"
}
target.AddRecipe(recipe);
}
иAddRecipe
выглядит следующим образом:
public void AddRecipe(Recipe recipe)
{
// validation stuff
// automapper stuff
try
{
using (var context = GetContext())
{
context.recipes.Add(recipe);
context.SaveChanges();
}
}
catch (DbUpdateException ex)
{
Console.WriteLine(ex.ToString());
throw;
}
}
Базовая таблица имеет внешний ключ к таблице cooking_method
, и в этом случае рецепт, который я пытаюсь вставить, имеет метод приготовления, которого нет вв этой таблице, поэтому я ожидаю, что будет выдано DbUpdateException .
Тест завершается неудачно и сообщает "AddRecipe_InvalidCookingMethod_ExpectExceptionThrown Throw исключение System.Data.Entity.Infrastructure.DbUpdateException, но исключение System.Data.Ent".Ожидаемое исключение... "
Я использую коннектор MySql 6.4.4, каркас сущностей 4.3, VS 2010, если что-то из этого является полезной информацией.
Ideas?
РЕШЕНИЕ:
Спасибо Ладиславу за помощь с этим.Я переместил исходное дерево и обновил большинство , но не все ссылки.Мой тестовый проект ссылался на неправильную версию Entity Framework.