我试图模拟SqlConnection
,其实质上是IDbConnection
。C# - Moq - 模拟接口的对象是代理而不是暴露的类
对于我准备我假装为我的测试:
var dbConnectionMock = new Mock<IDbConnection>();
dbConnectionMock.Setup(x => x.CreateCommand()).Returns(new SqlCommand());
var repository = new XxxRepository(dbConnectionMock.Object);
的构造函数库套这prope RTY:
private IDbConnection Connection { get; set; }
然后Connection
调用数据库时使用。
var command = Connection.CreateCommand();
command.Connection = Connection;
//这里失败了,因为连接是IDbConnection
,IDbConnectionProxy
代理类型。
我该如何避免使用代理?
我想测试的是command.ExecuteNonQuery()
被调用。
无论是抽象ado.net自己的对象中,或者使用一个实际的连接。试图模拟ado.net比它的价值更麻烦。 –