PivotalServicesOss / moq_datareader

Library helps in mocking IDataReader using Moq for unit testing
MIT License
1 stars 2 forks source link

A simple Moq extensions library that helps in mocking IDataReader

Kindly raise any issues at Project Issues

Build PivotalServices.MoqExtensions.DataReader
Nuget (Prod Release) NuGet

Salient features

Package

Usage Instructions

    using PivotalServices.MoqExtensions.DataReader;
    var mockDataTable = new MockDataTable();

    //Add Columns (schema)
    mockDataTable.Columns.Add(new MockDataColumn("Column1", typeof(string)));
    mockDataTable.Columns.Add(new MockDataColumn("Column2", typeof(string)));
    mockDataTable.Columns.Add(new MockDataColumn("Column3", typeof(string), true));

    //Add Rows (data) - column order is important here
    mockDataTable.Rows.Add(new MockDataRow("Row1_Column1_Value", "Row1_Column2_Value", "Row1_Column3_Value"));
    mockDataTable.Rows.Add(new MockDataRow("Row2_Column1_Value", "Row2_Column2_Value", "Row2_Column3_Value"));
    mockDataTable.Rows.Add(new MockDataRow("Row3_Column1_Value", "Row3_Column2_Value", "Row3_Column3_Value"));
    mockDataTable.Rows.Add(new MockDataRow("Row4_Column1_Value", "Row4_Column2_Value", "Row4_Column3_Value"));
    var reader = new Mock<IDataReader>();

    //Setup reader to return the data from datatable
    reader.SetupWithReturn(mockDataTable);
    while (reader.Read())
    {
        models.Add(new Model
        {
            Column1 = reader.GetString(reader.GetOrdinal("Column1")),
            Column2 = reader.GetString(reader.GetOrdinal("Column2")),
            Column3 = Convert.IsDBNull(reader.GetOrdinal("Column3")) ? null : reader.GetString(reader.GetOrdinal("Column3")),
        });
    }   

Issues

Contributions are welcome!