Javascript 如何使用jest测试TypeScript中的枚举列表是否具有所有字符串值?
我有一个枚举列表:Javascript 如何使用jest测试TypeScript中的枚举列表是否具有所有字符串值?,javascript,reactjs,typescript,jestjs,enzyme,Javascript,Reactjs,Typescript,Jestjs,Enzyme,我有一个枚举列表: export enum Hobbies { Paint = 'PAINT', Run = 'RUN', Bike = 'BIKE', Dance = 'DANCE' } 我想开玩笑地循环一下,并断言所有的字符串值都在那里,可能还有每个键?这种情况下,值为null/缺失,可能会影响UI呈现的行为 我想导入列表,并断言每个值都不是空的。但是我使用test.each()吗?这个列表实际上要长得多 我知道枚举不需要这样的测试,但在这种情况下它很有用。使用快照
export enum Hobbies {
Paint = 'PAINT',
Run = 'RUN',
Bike = 'BIKE',
Dance = 'DANCE'
}
我想开玩笑地循环一下,并断言所有的字符串值都在那里,可能还有每个键?这种情况下,值为null/缺失,可能会影响UI呈现的行为
我想导入列表,并断言每个值都不是空的。但是我使用test.each()吗?这个列表实际上要长得多
我知道枚举不需要这样的测试,但在这种情况下它很有用。使用快照测试。每当枚举值更改时,如果两个快照不匹配,则测试将失败
例如
index.ts
:
export enum Hobbies {
Paint = 'PAINT',
Run = 'RUN',
Bike = 'BIKE',
Dance = 'DANCE',
}
import { Hobbies } from './';
describe('67755520', () => {
it('should pass', () => {
expect(Hobbies).toMatchInlineSnapshot(`
Object {
"Bike": "BIKE",
"Dance": "DANCE",
"Paint": "PAINT",
"Run": "RUN",
}
`);
});
});
index.test.ts
:
export enum Hobbies {
Paint = 'PAINT',
Run = 'RUN',
Bike = 'BIKE',
Dance = 'DANCE',
}
import { Hobbies } from './';
describe('67755520', () => {
it('should pass', () => {
expect(Hobbies).toMatchInlineSnapshot(`
Object {
"Bike": "BIKE",
"Dance": "DANCE",
"Paint": "PAINT",
"Run": "RUN",
}
`);
});
});
为了推荐最佳方法,了解这样的测试在您的案例中为什么有用可能会有所帮助。正如您所暗示的,枚举的键存在并具有它们的值,这是不变的。您想防止将来删除键或更改值吗?TS应该已经涵盖了这一点。如果不存在正在使用的键,将导致错误,不是吗?@kdau是的,这是正确的。这是一个很长的列表,所以我想防止将来可能对值进行更改。我该怎么写这个测试呢?谢谢!有没有一种方法可以显式地进行动态测试?例如使用for..in,然后检查当我传递该枚举值时,它是否具有相应的值?