1

我正在尝试为我的应用程序编写一个测试,以了解何时在我的数据库调用中引发 OdbcException。但是,OdbcException 没有公共构造函数,这意味着我无法创建该异常的新类型,也无法模拟它。

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

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

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

4

2 回答 2

3

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

我的自定义 DbException 类:

public class CustomTestDbException : DbException
{   
}

我的模拟代码:

myMock.Setup(mockObject => mockObject.MyMethod()).Throws(new CustomTestDbException());
于 2014-08-21T22:30:28.180 回答
1
  1. 使用反射和/或Activator.CreateInstance创建它。或者 2. 编写一些引发异常的代码,并使用它来生成所述异常作为方法的返回类型。:)
于 2013-06-20T14:31:17.747 回答