私は初めてmoq
モックをセットアップするので、少し助けてもらえます。ExecuteReader()
usingをモックアップするにはどうすればよいMoq
ですか?
アップデート
以下の ExecuteReader のコードがあります
private void ExecuteGainLossCommand(AccountsContext dbContext, string query, MIS_GainLoss collGainLoss)
{
try
{
var cmd = dbContext.Database.Connection.CreateCommand();
if (cmd.Connection.State != ConnectionState.Open) cmd.Connection.Open();
cmd.CommandText = query;
var reader = cmd.ExecuteReader();
if (reader.HasRows)
{
collGainLoss.collGainLoss = ((IObjectContextAdapter)dbContext)
.ObjectContext
.Translate<MIS_GainLossHolding>(reader).ToList<MIS_GainLossHolding>();
}
//Fetch Total's result set
reader.NextResult();
reader.NextResult();
if (reader.HasRows)
{
collGainLoss.collPurchaseData = ((IObjectContextAdapter)dbContext)
.ObjectContext
.Translate<MIS_GainLossHolding>(reader).ToList<MIS_GainLossHolding>();
}
reader.Close();
}
finally
{
dbContext.Database.Connection.Close();
}
}
これはモデルです
public class MIS_GainLoss
{
public ICollection<MIS_GainLossHolding> collGainLoss { get; set; }
public ICollection<MIS_GainLossHolding> collPurchaseData = new List<MIS_GainLossHolding>();
}
public class MIS_GainLossHolding
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Symbol { get; set; }
}
以下は、単体テストでモックしたいモックデータです
var holdings =
new List<MIS_GainLoss>{
new MIS_GainLoss
{
collGainLoss = new[]
{
new MIS_GainLossHolding {
Id = Guid.NewGuid(),
Name = "ASTON/River Road Dividend All Cap Val N",
Symbol = "ARDEX",
},
new MIS_GainLossHolding {
Id = Guid.NewGuid(),
Name = "Champlain Mid Cap Adv",
Symbol = "CIPMX",
}
},
collPurchaseData = new[]
{
new MIS_GainLossHolding {
Id = Guid.NewGuid(),
Name = "ASTON/River Road Dividend All Cap Val N",
Symbol = "ARDEX",
},
new MIS_GainLossHolding {
Id = Guid.NewGuid(),
Name = "Champlain Mid Cap Adv",
Symbol = "CIPMX",
}
},
}
};
一部の人は、 IDataReader apporoch がそれに適していることを示唆しており、どのように実装できますか? このコードの単体テスト ケースを作成するにはどうすればよいですか