我们基于列的数据库的数据字段映射到 DataField 类。在每个数据字段对象上GetValue<T>()
都可以调用该方法。
如果T
是非法类型,则会引发异常。我应该在我的单元测试中通过什么类型,如果我通过非法类型,我会测试是否抛出异常?我想到的下一个已知的非法类型?还是有更抽象的方法?
public object GetValue<T>()
{
if (typeof(T) == typeof(string)) return ValueString;
if (typeof(T) == typeof(int?)) return ValueInt;
if (typeof(T) == typeof(double?)) return ValueDouble;
if (typeof(T) == typeof(DateTime?)) return ValueDateTime;
if (typeof(T) == typeof(bool)) return ValueBoolean == true;
var ex = new Exception("Following type is not supported: " + typeof(T));
Log.Error(ex);
throw ex;
}
因此,除了那些之外的所有类型,如果它们被通过,都应该抛出这个异常。所以我需要一种虚拟类型,对吧?
目前我的单元测试如下所示:
[Fact]
public void If_T_is_illegal_type_an_exception_gets_thrown()
{
_dataField = new DataField(_params);
Assert.Throws<Exception>(() => _dataField.GetValue<Type>());
}