当前位置:  开发笔记 > 编程语言 > 正文

如何在没有公共构造函数的情况下模拟/伪造/存根密封OracleException?

如何解决《如何在没有公共构造函数的情况下模拟/伪造/存根密封OracleException?》经验,为你挑选了2个好方法。

在我的测试中,我需要测试抛出OracleException时会发生什么(由于存储过程失败).我正在尝试设置Rhino Mocks

Expect.Call(....).Throw(new OracleException());

无论出于何种原因,OracleException似乎都没有公共构造函数.我该怎么做才能测试这个?

编辑:这正是我想要实例化的内容:

public sealed class OracleException : DbException {
  private OracleException(string message, int code) { ...}
}

Kingpin2k.. 7

对于oracle的托管数据访问(v 4.121.1.0),构造函数再次更改

var ci = typeof(OracleException).GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] { typeof(int), typeof(string), typeof(string), typeof(string) }, null);
var c = (OracleException)ci.Invoke(new object[] { 1234, "", "", "" });


George Mauer.. 5

这是你如何做到的:

    ConstructorInfo ci = typeof(OracleException).GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] {typeof(string), typeof(int)}, null);
    var c = (OracleException)ci.Invoke(new object[] { "some message", 123 });

感谢所有帮助,你被投了赞成票



1> Kingpin2k..:

对于oracle的托管数据访问(v 4.121.1.0),构造函数再次更改

var ci = typeof(OracleException).GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] { typeof(int), typeof(string), typeof(string), typeof(string) }, null);
var c = (OracleException)ci.Invoke(new object[] { 1234, "", "", "" });



2> George Mauer..:

这是你如何做到的:

    ConstructorInfo ci = typeof(OracleException).GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] {typeof(string), typeof(int)}, null);
    var c = (OracleException)ci.Invoke(new object[] { "some message", 123 });

感谢所有帮助,你被投了赞成票

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有