我在工厂中有一个switch语句,该语句根据传入的枚举的值返回命令。类似:
public ICommand Create(EnumType enumType)
{
switch (enumType)
{
case(enumType.Val1):
return new SomeCommand();
case(enumType.Val2):
return new SomeCommand();
case(enumType.Val3):
return new SomeCommand();
default:
throw new ArgumentOutOfRangeException("Unknown enumType" + enumType);
}
}
我目前对枚举中的每个值都有一个开关盒。对于每种情况,我都有单元测试。如何对默认情况下的错误进行单元测试?显然,目前我无法传递未知的EnumType,但谁又说将来不会更改。无论如何,仅出于单元测试的目的,我是否可以扩展或模拟EnumType?
最佳答案
尝试以下
Assert.IsFalse(Enum.IsDefined(typeof(EnumType), Int32.MaxValue);
Create((EnumType)Int32.MaxValue);
的确,您为“默认”案例选择的任何值都可能有一天成为有效值。因此,只需添加一个测试以确保它与您检查默认值的位置不同即可。