【发布时间】:2012-09-06 12:10:47
【问题描述】:
我试图模拟SqlConnection,本质上是IDbConnection。
为此,我准备我的模拟测试:
var dbConnectionMock = new Mock<IDbConnection>();
dbConnectionMock.Setup(x => x.CreateCommand()).Returns(new SqlCommand());
var repository = new XxxRepository(dbConnectionMock.Object);
存储库的构造函数设置此属性:
private IDbConnection Connection { get; set; }
然后在调用数据库时使用Connection。
var command = Connection.CreateCommand();
command.Connection = Connection; //这里失败了,因为Connection是IDbConnection、IDbConnectionProxy的代理类型。
如何避免使用代理?
我只想测试command.ExecuteNonQuery() 是否被调用。
【问题讨论】:
-
在您自己的对象中抽象 ado.net,或使用实际连接。试图模拟 ado.net 比它的价值更麻烦。
标签: c# .net unit-testing mocking moq