【发布时间】:2017-06-15 20:28:55
【问题描述】:
我正在尝试对接受 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 */);
});
});
当然打字稿会抱怨参数类型和参数类型不匹配。
有没有办法用虚构的值来模拟枚举?
【问题讨论】:
-
为什么不想使用实际的枚举?测试一个应该得到 enum X 但在测试中会得到 enum Y 的函数是没有意义的
-
@NitzanTomer 你是绝对正确的。在考虑了几分钟后,我得出了同样的结论。我发布了一个答案,解释了为什么我起初认为嘲笑我的枚举是个好主意。
标签: unit-testing typescript mocking jestjs