I am trying to mock some transactions in sql using the following code:
//Type type = typeof(SqlTransaction);
//ConstructorInfo[] info = type.GetConstructors(BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Instance);
//Object obj = info[0].Invoke(new object[] { new SqlInternalConnection, null, IsolationLevel.ReadCommitted, null });
SqlTransaction sqlTransaction = (SqlTransaction)MockManager.MockObject(typeof(SqlTransaction)).Object;
Mock baseMock = MockManager.Mock(typeof(Base));
baseMock.ExpectGetAlways("ConnectionString", "");
Mock sqlConnectionMock = MockManager.Mock(typeof(SqlConnection));
sqlConnectionMock.ExpectCall("Open");
sqlConnectionMock.ExpectAndReturn("BeginTransaction", sqlTransaction).Args(Check.IsTypeOf(typeof(IsolationLevel)), Check.IsTypeOf(typeof(string)));
sqlConnectionMock.ExpectCall("Close");
sqlConnectionMock.ExpectCall("Dispose");
Mock sqlTransactionMock = MockManager.Mock(typeof(SqlTransaction));
sqlTransactionMock.ExpectCall("Commit");
My problem is I can't figure out how to create an instance of SqlTransaction since all of it's contructors are private, and even if I call the constructor with reflection, some of the arguments it requires are private.
Any suggestions?