MSTest ExpectedException测试失败

时间:2012-03-06 16:53:56

标签: mysql entity-framework mstest entity-framework-4.3

所以,我对这次失败感到困惑。我正在使用MSTest来运行一些集成测试(因为有一个DB支持这个,我想我们称之为而不是单元测试)并且有一个类似的测试方法:

[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引发了异常System.Data.Entity.Infrastructure.DbUpdateException,但是预期会出现异常System.Data.Entity.Infrastructure.DbUpdateException ....”它继续提到内部异常类型 MySql.Data.MySqlClient.MySqlException :无法添加或更新子行:外键约束失败...“

我正在使用MySql连接器6.4.4,实体框架4.3,VS 2010,如果其中任何一个是有用的信息。

想法?


SOLUTION:

感谢Ladislav帮忙解决这个问题。我移动了源代码树并更新了 most 但未更新所有引用。我的测试项目引用了错误版本的Entity Framework。

1 个答案:

答案 0 :(得分:1)

正如我在评论中所指出的,这看起来像解决方案中的项目使用不同版本的EntityFramework.dll库的问题。