测试中组件的访问状态

时间:2019-01-14 16:50:42

标签: javascript reactjs jestjs enzyme

我有一个组件,当我们注入不同的道具时会改变他的一些道具。

我正在努力寻找一种简单的方法来从测试中获取浅化组件的状态

这是代码:

describe('componentWillReceiveProps', () => {
    it('update state isDedicatedDealPriceSelected to true', () => {
        const productComponent = shallow(<Product selectedPriceOption="Test" />);
        productComponent.setProps({ selectedPriceOption: 'dedicatedDealPrice' });
        expect(productComponent.props.isDedicatedDealPriceSelected).toBeTruthy();
    });
});

我不确定,我想访问应该是真实的道具isDedicatedDealPriceSelected。我认为我在productComponent.props.isDedicatedDealPriceSelected的最后一行写错了什么 我如何访问组件的道具?

我正在使用enzime通过玩笑来浅化渲染我的组件。

预先感谢!

编辑:我不是要访问道具,而是状态!抱歉,拼写错误

2 个答案:

答案 0 :(得分:0)

似乎setProps在重新渲染后执行了回调。也许您的测试需要异步,并且断言必须在此回调中完成。

在示例中,似乎只有componentWillReceiveProps被同步调用。

https://airbnb.io/enzyme/docs/api/ShallowWrapper/setProps.html

答案 1 :(得分:0)

要访问浅层渲染组件的状态,可以使用以下命令进行访问:

const wrapper = shallow(<component />);
wrapper.state().componentVar

要访问浅层渲染组件的功能,可以使用:

wrapper.instance().componentFunction()