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