我在工厂中有一个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);

的确,您为“默认”案例选择的任何值都可能有一天成为有效值。因此,只需添加一个测试以确保它与您检查默认值的位置不同即可。

10-01 07:39