【问题标题】:How do I create an instance of Oracle.DataAccess.Client.OracleException to use with NMock如何创建 Oracle.DataAccess.Client.OracleException 的实例以与 NMock 一起使用
【发布时间】:2010-07-01 17:15:41
【问题描述】:

我正在使用 Oracle.DataAccess.Client 数据提供程序客户端。我在构造 OracleException 对象的新实例时遇到问题,但它一直告诉我没有公共构造函数。我看到其他人有同样的问题并尝试了他们的解决方案,但它们似乎不起作用。这是我的测试代码:

object[] args = { 1, "Test Message" };
ConstructorInfo ci = typeof(OracleException).GetConstructor(BindingFlags.NonPublic 
     | BindingFlags.Instance, null, System.Type.GetTypeArray(args), null);
var e = (OracleException)ci.Invoke(args);

在调试测试代码时,我总是得到 'ci' 的 NULL 值。

Oracle 是否已将库更改为不允许这样做?我做错了什么,我需要做什么来实例化一个 OracleException 对象以与 NMock 一起使用?

顺便说一下,我使用的是 10g 版本的客户端库。

谢谢,

查理

【问题讨论】:

    标签: oracle mocking oracle10g oracleclient oracleexception


    【解决方案1】:

    ODP.NET 中的 OracleException 与 Microsoft 客户端中的 OracleException 不同。 OracleException有5个构造函数信息,可以通过GetConstructors()获取。

    在获得的构造函数列表中,你会看到没有带参数的构造函数(int,string)。这就是为什么你在 ci 中得到 NULL。

    如果您提供正确的参数列表,您将拥有正确的 ConstructorInfo,并且能够通过 Invoke(param) 调用构造函数;

    但是,OracleException 构造函数并非设计为这样调用 - 并非所有字段都有正确的信息。

    2全部: 我需要遵循 OracleException: ORA-00001 违反唯一约束 (string.string) ORA-03113 通信通道上的文件结尾 ORA-03135: 连接失去联系 ORA-12170: TNS: 发生连接超时 供测试用。如何创建它们?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-19
      • 2016-05-09
      • 1970-01-01
      • 2020-04-10
      • 2021-06-15
      相关资源
      最近更新 更多