如何获取Jest状态下嵌套对象的部分值



我正在为React中的一个类组件编写单元测试。我想测试一个大对象的单独部分,它占用了50多行代码。虽然我可以在逐行更改整个对象时对其进行测试,但我觉得我的测试几乎是不可读的,因为我将不断发布所有50行,分别测试每个嵌套的值。

因此,在弄不懂语法后,我在这里搜索了一下,在谷歌上看到了很多关于如何设置嵌套对象的State的q/a,但没有关于如何获取的q/a。

// expect(component.state("addProjectForm['projectName']['value']")).toBe("")      
// expect(component.state("addProjectForm")("projectName")("value")).toBe("")
expect(component.state("addProjectForm")).toBe({"projectName": {"value" : ""}})

这是我测试的设置。它们都失败了,最后一行确实返回了对象,虽然我知道如何传递它,但我必须再添加54行代码,然后对我需要为设置和调用inputChangeHandler((后的第二次编写的20多个单元测试中的每一个重复这一行,我觉得一定有更好的方法。

所以。。。是否可以只测试对象的最后一层?如果可以,如何测试?

开玩笑地说,toMatchObject()断言"JavaScript对象匹配对象的属性的子集";。

因此,以下内容将通过:

expect(component.state("addProjectForm")).toMatchObject({"projectName": {"value" : ""}})

最新更新