0
我正在爲從數據表填充對象的方法編寫單元測試。在一個特定的單元測試中,我想檢查如果數據行中有一個空值,對象將如何填充。如果我將一個DBNull.value分配給數據行,那麼運行測試時會出現異常。使用dbnull測試Linq 2 sql的單元
我已經發布根據下文的測試主題 -
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'
只是冒險猜測這裏..當你添加一列到dataTable,你必須指定它爲typeof(int?)來表明它是一個可能包含空值的整數列嗎? – Gishu 2009-12-16 04:45:04
也將assert改爲'Assert.IsFalse(test.ChannelId.HasValue)':在眼睛上更容易。 – Gishu 2009-12-16 04:46:50