我正在尝试在我的 enzyme 单元测试中检查组件的默认状态。为此,我具有以下组件:

import React, { Component } from 'react';

class Picker extends Component {
    constructor(props) {
        super(props);
        this.state = {
            sources: true
        };
    }
}

...

export default Picker;

最后,我的单元测试如下:
it('should contain `everything` as a default value', () => {
  const wrapper = mount(<Picker name='cnn' />);
  expect(wrapper.state('sources')).to.exist()
});

我在这里面临的问题是,我无法获取组件的默认状态。如果我没看错,函数wrapper.state('sources')应该返回'true'。

我还有其他步骤想念吗?我在用着:
  • “react”:“^ 16.2.0”
  • “chai”:“^ 4.1.2”,
  • “ enzyme ”:“^ 3.2.0”,
  • “ enzyme -适配器- react -16”:“^ 1.1.1”,
  • “jsdom”:“^ 11.5.1”,
  • “mocha”:“^ 4.0.1”,
  • “react-addons-test-utils”:“^ 15.6.2”
  • 最佳答案

    我为此付出了很多努力!由于PickerComponent的子类,因此您要查找的状态实际上存在于wrapper.instance()上,而不是在wrapper上。
    shallowmount的“包装器”返回值就是这样:包装器。这不是您要测试的实际组件。我认为它是组件所包围的一个小环境。

    为了对组件的状态, Prop 和功能进行断言,我取得了更好的成功:

    const component = wrapper.instance()
    

    然后在component上,可以调用.state.props和&c。

    如果您有任何疑问,请告诉我!

    关于reactjs - enzyme wrapper.state返回null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48010837/

    10-10 15:00