如何使用Jest和Enzyme测试嵌套道具

时间:2018-11-29 09:28:25

标签: reactjs jestjs enzyme

我有一个组件,其props值如下所示:

emailProps = {email: {isOpen: false}};

因此,现在我尝试将isOpen的值更新为true,并测试prop的值是否已更新。

it('tests after updating isOpen props to true', () => {
    wrapper.setProps({ email:{ isOpen: true} });
});

所以,我看到我们可以将道具测试为:

const wrapper = mount(<MyComponent foo={10} />);
expect(wrapper.props().foo).to.equal(10);

因为,在我的情况下,道具isOpen位于email内部。那么,我该如何测试呢? 我尝试过:

expect(wrapper.props().email.isOpen).toBe(true);

但是失败了。如何测试嵌套道具?

1 个答案:

答案 0 :(得分:1)

我在嵌套状态上也有类似的问题。我以这种方式成功了:

it('receives this.state.user.name as a "name" prop', () => {
  expect(header().prop('name')).toEqual(appWrapper.state("user").name);
});

在您的情况下,它看起来像这样:

expect(wrapper.prop('email').isOpen).toBe(true);