2012-03-06 4 views
2

그래서이 오류로 혼란 스럽습니다.MSTest ExpectedException 테스트 실패

[TestMethod()] 
[ExpectedException(typeof(DbUpdateException))] 
public void AddRecipe_InvalidCookingMethod_ExpectExceptionThrown() 
{ 
    var target = GetRepository(); 
    var recipe = new Recipe() 
    { 
     Method = "Sous-vide" 
    } 
    target.AddRecipe(recipe); 
} 

AddRecipe 외모 : 그래서 같은 시험 방법을 (이 백업 DB를이 이후, 나는 우리가 단위 테스트보다 오히려 그 전화 것 같아요) 일부 통합 테스트를 실행하도록 MSTEST을 사용하고 있습니다 이 같은 :

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 년,

아이디어?


해결책 :이 하나 도와위한 라디에

감사합니다. 나는 소스 트리를 옮기고 을 가장으로 업데이트했지만 모든 참조가 아닙니다. 내 테스트 프로젝트에서 잘못된 버전의 Entity Framework를 참조하고있었습니다.

+0

테스트 프로젝트와 테스트 한 프로젝트가 동일한 EF 라이브러리를 사용함을 확인할 수 있습니까? –

+0

그건 그랬어 - 코드를 이동하고 하나를 잘못 참조했다. 감사! 그 대답을하면 해결책으로 표시 할 것입니다. – itsmatt

답변

1

의견에서 지적했듯이 솔루션의 프로젝트가 다른 버전의 EntityFramework.dll 라이브러리를 사용하는 문제와 같습니다.

관련 문제