如何在不违反类型协定的情况下模拟 Typescript 枚举



我正在尝试对接受 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 抱怨参数类型和参数类型不匹配。

有没有办法用虚构的值来嘲笑枚举?

在考虑了这个问题之后,我认为我在这个问题上的方法没有意义。

在我的特定情况下,正在测试的函数使用枚举作为一组唯一标识符(防止错误键入标识符,替代代码中的字符串),但不对任何特定标识符进行操作。 例如,没有基于枚举值生成结果的开关情况。 相反,它使用枚举值作为键来访问作为第二个参数传递的映射。

一般来说,我认为使用模拟枚举进行单元测试是没有意义的。

最新更新