Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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
Reactjs jest要定义的多个属性_Reactjs_Jestjs - Fatal编程技术网

Reactjs jest要定义的多个属性

Reactjs jest要定义的多个属性,reactjs,jestjs,Reactjs,Jestjs,是否有一种方法可以检查在jest测试中定义的多个属性 现在我正在做 expect(a.startTime).toBeDefined(); expect(a.userId).toBeDefined(); expect(a.loaded).toBeDefined(); expect(a.session).toBeDefined(); expect(a.version).toBeDefined(); 这些可以合并成一条线吗 我将测试编写为expecta.startTime&&a.userId&&a.

是否有一种方法可以检查在jest测试中定义的多个属性

现在我正在做

expect(a.startTime).toBeDefined();
expect(a.userId).toBeDefined();
expect(a.loaded).toBeDefined();
expect(a.session).toBeDefined();
expect(a.version).toBeDefined();
这些可以合并成一条线吗

我将测试编写为expecta.startTime&&a.userId&&a.loaded….toBeDefined


但评审员拒绝了它,认为&&可能无法以正确的方式测试存在性,也没有确切说明哪个属性是未定义的。

我建议定义a的形状。以下是一个假设,因此您需要根据需要调整它:

托夸尔酒店 expect.objectContaining{ 开始时间:期待。任何日期, userId:expect.anyString, 已加载:expect.anyBoolean, 会话:expect.objectContaining{…}, 版本:expect.anyNumber } ; 使用此选项可以在忽略其他属性的同时匹配某些属性;但是,如果您希望匹配对象及其所有属性,则只需使用:{}


以上是通过断言属性的数据类型来匹配属性的一般方法。您还可以使用实数:字符串、对象、布尔、数字等来匹配。避免使用tobedefine,因为它对数字的定义不是很具体?布尔值?一根绳子?函数?

只是为了强调我的经验,对于许多React开发人员来说,这是一个未知的领域:我们可以使用expect.any甚至expect.any,不仅在objectContaining中,而且在其他jest的断言中,比如in.arrayContaining甚至.toEqual