0

私は初めて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 がそれに適していることを示唆しており、どのように実装できますか? このコードの単体テスト ケースを作成するにはどうすればよいですか

4

0 に答える 0