我有一个看起来像这样的函数:
std::string SomeClass::convertStateToString(StateE state) const
{
std::string stateAsString;
switch (state)
{
case UNKNOWN:
stateAsString = "UNKNOWN";
break;
case OFFLINE:
stateAsString = "OFFLINE";
break;
case ENABLED:
stateAsString = "ENABLED";
break;
case DISABLED:
stateAsString = "DISABLED";
break;
default:
stateAsString = "ABNORMAL";
break;
}
return stateAsString;
}
其中StateE定义为:
typedef enum
{
UNKNOWN = 0,
OFFLINE = 1,
ENABLED = 2,
DISABLED = 3
} StateE;
为了进行单元测试,我想向
convertStateToString
馈送一些错误的数据,并验证是否返回了"ABNORMAL"
。这可能吗?换句话说,是否可以将超出枚举范围的值作为参数传递给函数,该函数的签名表示参数为枚举类型?
在尝试了指针和
reinterpret_cast
之后,我几乎准备宣称函数convertStateToString
在任何情况下都不能返回"ABNORMAL"
。没办法太客气!
最佳答案
您可以在单元测试中编写:
convertStateToString(static_cast<StateE>(10));
这将强制您的代码传递您的开关/案例的“默认”值。