我正在尝试为我的应用编写测试,以便在数据库调用中抛出OdbcException。但是,OdbcException没有公共构造函数,这意味着我无法创建该类型的新类型,我无法模拟它。
通常使用Moq我会模拟这样的异常:
_dataAccess.Setup(dataAccess => dataAccess.MethodToTest()).Throws<SqlException>();
是否有另一种模拟OdbcException的方法,以便我可以测试我的功能?它继承自DbException,就我所尝试的而言,它也没有公共构造函数。
答案 0 :(得分:2)
我遇到了类似的问题并通过创建我自己的继承自DbException的自定义异常来解决它。这将适用于OdbcException或OleDbException,因为它们是DbExceptions。
我的自定义DbException类:
public class CustomTestDbException : DbException
{
}
我的模拟代码:
myMock.Setup(mockObject => mockObject.MyMethod()).Throws(new CustomTestDbException());
答案 1 :(得分:1)
Activator.CreateInstance
可能会创建它。或者2.编写一些抛出异常的代码,并使用它从方法中生成异常作为返回类型。 :)