我試圖模擬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比它的價值更麻煩。 –