How can I mock/fake/stub sealed OracleException with no public constructor? How can I mock/fake/stub sealed OracleException with no public constructor? oracle oracle

How can I mock/fake/stub sealed OracleException with no public constructor?


For oracle's managed data access (v 4.121.1.0) the constructor changed again

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, "", "", "" });


Here is how you do it:

    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 });

Thanks to all that helped, you have been upvoted


I'm using the Oracle.DataAccess.Client data provider client. I am having trouble constructing a new instance of an OracleException object, but it keeps telling me that there are no public constructors. I tried all of the ideas shown above and keep getting a null reference exception.

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);

When debugging the test code, I always get a NULL value for 'ci'.

Has Oracle changed the library to not allow this? What am I doing wrong and what do I need to do to instantiate an OracleException object to use with NMock?

By the way, I'm using the Client library for version 10g.

Thanks,

Charlie