我试图对接受Enum参数类型的函数进行单元测试,例如像这样的函数。
function consumeEnumValue(value: MyEnumType) {
//do something
}
但我不想将真正的Enum导入到我的测试代码中,我想使用带有虚构条目的模拟Enum。以下不起作用:
import { consumeEnumValue } from 'production-code.ts'
enum FictionalEnum {
foo,
bar,
}
describe('consumeEnumValue', () => {
it('should run and have no type errors', () => {
expect(consumeEnumValue(FictionalEnum.foo)).toEqual(/* something */);
});
});
当然,打字稿抱怨参数类型和参数类型不匹配。
有没有办法模拟具有虚构值的枚举?
答案 0 :(得分:0)
在更多地考虑这个问题之后,我不认为我在问题中的方法是有道理的。
在我的特定情况下,被测试的函数使用枚举作为一组唯一标识符(防止错误标识符,替代代码中的字符串),但不对任何特定标识符进行操作。例如,没有根据枚举值产生结果的开关案例。相反,它使用枚举值作为键来访问作为第二个参数传递的映射。
一般来说,我认为用模拟枚举进行单元测试是不合理的。