无法模拟OdbcException

时间:2013-06-20 14:07:22

标签: c# mocking odbc moq

我正在尝试为我的应用编写测试,以便在数据库调用中抛出OdbcException。但是,OdbcException没有公共构造函数,这意味着我无法创建该类型的新类型,我无法模拟它。

通常使用Moq我会模拟这样的异常:

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

是否有另一种模拟OdbcException的方法,以便我可以测试我的功能?它继承自DbException,就我所尝试的而言,它也没有公共构造函数。

2 个答案:

答案 0 :(得分:2)

我遇到了类似的问题并通过创建我自己的继承自DbException的自定义异常来解决它。这将适用于OdbcException或OleDbException,因为它们是DbExceptions。

我的自定义DbException类:

public class CustomTestDbException : DbException
{   
}

我的模拟代码:

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

答案 1 :(得分:1)

  1. 使用反射和/或Activator.CreateInstance可能会创建它。或者2.编写一些抛出异常的代码,并使用它从方法中生成异常作为返回类型。 :)