Kri*_*anB 3 .net c# unit-testing moq mocking
我正在尝试模拟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在调用Db时使用.
var command = Connection.CreateCommand();
command.Connection = Connection;//这里失败了,因为Connection是的代理类型IDbConnection,IDbConnectionProxy.
我怎样才能避免使用代理?
我想测试的就是command.ExecuteNonQuery()所谓的.
问题可能是使用SqlConnection,因为它的Connection属性是SqlConnection类型.尝试返回模拟IDbCommand而不是:
var dbCommandMock = new Mock<IDbCommand>();
dbCommandMock.Setup(dbc => dbc.ExecuteNonQuery());
dbConnectionMock.Setup(dbc => dbc.CreateCommand()).Returns(dbCommandMock.Object);
// ...
dbCommandMock.VerifyAll();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3870 次 |
| 最近记录: |