2013-06-20 3 views
1

내 데이터베이스 호출에서 OdbcException이 throw 될 때 내 응용 프로그램에 대한 테스트를 작성하려고합니다. 그러나 OdbcException에는 공용 생성자가 없으므로 새로운 예외 유형을 만들 수 없으며 조롱 할 수 없습니다. 내 기능을 테스트 할 수 있도록 OdbcException을 조롱하는 또 다른 방법은OdbcException을 모의 수 없습니다.

_dataAccess.Setup(dataAccess => dataAccess.MethodToTest()).Throws<SqlException>(); 

있습니까 :

보통이 같은 예외를 조롱 할 MOQ를 사용하고 계십니까? 그것은 DbException을 상속합니다. DbException은 내가 시도한만큼 public 생성자가 없습니다.

답변

1
  1. 반사 및/또는 Activator.CreateInstance을 사용하여 생성 할 수 있습니다. 또는 2. 예외를 throw하는 일부 코드를 작성하고 메서드에서 반환 유형으로 예외를 생성하는 데 사용합니다. :)
+1

Activator.CreateInstance로 작동하지 않습니다하지만 두 번째 제안을 시도 않았고이 가능한 것, 내가 볼 수 없습니다 이 문제를 푸는 더 좋은 방법 – Serberuss

+0

성가신 맞습니까? – Haney

+0

두 번째 지점을 확장 할 수 있습니까? 나는 그것을 이해하고 그것을 사용하려고 노력하고있다! 나는 직면하고 문제가 너무 사용자 지정 예외가 필요할 수도 있습니다 - http://stackoverflow.com/questions/38209450/repeating-odbcexception-c-sharp – sethu

2

비슷한 문제가 발생하여 DbException을 상속 한 자체적 인 사용자 지정 예외를 만들어 해결했습니다. 이것은 DbExceptions이기 때문에 OdbcException 또는 OleDbException에 대해 작동합니다.

내 사용자 정의 DbException 클래스 :

public class CustomTestDbException : DbException 
{ 
} 

내 모의 코드 :

myMock.Setup(mockObject => mockObject.MyMethod()).Throws(new CustomTestDbException()); 
+0

정확히 같은 일은 아니지만 DbException 아마 어쨌든 잡기 위해 더 나은 일입니다 그것은 드라이버 독립적입니다. –

관련 문제