그래서이 오류로 혼란 스럽습니다.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를 참조하고있었습니다.
테스트 프로젝트와 테스트 한 프로젝트가 동일한 EF 라이브러리를 사용함을 확인할 수 있습니까? –
그건 그랬어 - 코드를 이동하고 하나를 잘못 참조했다. 감사! 그 대답을하면 해결책으로 표시 할 것입니다. – itsmatt