Модульное тестирование Linq 2 sql с dbnull - PullRequest
0 голосов
/ 16 декабря 2009

Я пишу модульный тест для метода, который заполняет объект из таблицы данных. В одном конкретном модульном тесте я хочу проверить, как объект будет заполнен, если в datarow есть нулевое значение. Если я назначу DBNull.value для datarow, я получу исключение при выполнении теста.

Я разместил тестируемый предмет ниже -

return dt.AsEnumerable().Select(
   row => new ChannelManager{ ChannelId = row.Field<int>("EventId") })
   .ToList();

Тест - -

DataSet ds = new DataSet();
DataTable dt1 = new DataTable();
dt1.Columns.Add("EventId", typeof(int));
DataRow dr1 = dt1.NewRow();
dr1["EventId"] = DBNull.value;
dt1.Rows.Add(dr1);
ds.Tables.Add(dt1);
if(!test.ChannelId.HasValue)
           Assert.True(true);

Но я получаю исключение, в котором говорится, что невозможно привести DBNull.Value к типу 'System.Int'

1 Ответ

0 голосов
/ 16 декабря 2009

Когда вы читаете значение, используйте обнуляемое int:

ChannelId = row.Field<int?>("EventId")

DBNull будет автоматически преобразовано в null, при условии, что запрашиваемый вами тип данных имеет значение null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...