Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jest测试TypeScript中的枚举列表是否具有所有字符串值?_Javascript_Reactjs_Typescript_Jestjs_Enzyme - Fatal编程技术网

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,然后检查当我传递该枚举值时,它是否具有相应的值?