我正在尝试对接受 Enum 参数类型的函数进行单元测试,例如这样的函数。
function consumeEnumValue(value: MyEnumType) {
//do something
}
但是我不想将真实的枚举导入到我的测试代码中,我想使用带有虚构条目的模拟枚举。 以下方法不起作用:
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 */);
});
});
当然,Typescript 抱怨参数类型和参数类型不匹配。
有没有办法用虚构的值来嘲笑枚举?
在考虑了这个问题之后,我认为我在这个问题上的方法没有意义。
在我的特定情况下,正在测试的函数使用枚举作为一组唯一标识符(防止错误键入标识符,替代代码中的字符串),但不对任何特定标识符进行操作。 例如,没有基于枚举值生成结果的开关情况。 相反,它使用枚举值作为键来访问作为第二个参数传递的映射。
一般来说,我认为使用模拟枚举进行单元测试是没有意义的。