Javascript 我通过道具的反应酶单元测试中的设置状态

Javascript 我通过道具的反应酶单元测试中的设置状态,javascript,unit-testing,reactjs,redux,enzyme,Javascript,Unit Testing,Reactjs,Redux,Enzyme,我正在使用酶测试下面的成分,我得到以下错误: 正如您在下面的组件中看到的,selectedAccount处于从props获取其值的状态,我在单元测试中设置了props class Modal extends Component { constructor(props) { super(props); this.state = { selectedAccount: props.accounts[0].id }; } render() { c

我正在使用酶测试下面的成分,我得到以下错误:

正如您在下面的组件中看到的,selectedAccount处于从props获取其值的状态,我在单元测试中设置了props

class Modal extends Component {
  constructor(props) {
    super(props);
    this.state = {
      selectedAccount: props.accounts[0].id
    };
  }

  render() {
    const {selectedAccount} = this.state;

    return <div>
              <p>
               {selectedAccount}
              </p>
         </div>;
  }
类模态扩展组件{
建造师(道具){
超级(道具);
此.state={
selectedAccount:props.accounts[0]。id
};
}
render(){
const{selectedAccount}=this.state;
返回

{selectedAccount}

; }
在我的测试中,我通过了设置“selectedAccount”变量的props 在这个州

以下是我的测试:

test.only('components/Modal: renders elements', t => {

  const defaultProps = { accounts: [{
        id: 1, desc: 'account1'
      }, {
      id: 2, desc: 'account2'
      }
  ]}

  const wrapper = shallow(
      <Modal/>
  ).setProps(defaultProps);

  const test = wrapper.find('p');
  t.equal(test.length, 1, 'should render 1 p element ');
  t.end();

 });
test.only('components/Modal:renders elements',t=>{
const defaultProps={帐户:[{
id:1,描述:“account1”
}, {
id:2,描述:“account2”
}
]}
常数包装=浅(
).setProps(defaultProps);
const test=wrapper.find('p');
t、 相等(测试长度,1,'应呈现1个p元素');
t、 end();
});
为什么我传递的道具(包括带有id和desc属性的accounts数组)没有设置状态?

.setProps()
正在注入属性并重新渲染。这是为了模拟随时间变化的属性。如果您希望该属性在构造期间可用,请将其作为属性传递,就像您习惯的那样:

const wrapper = shallow(
  <Modal accounts={defaultProps.accounts} />
)
const wrapper=shallow(
)
const wrapper = shallow(
  <Modal accounts={defaultProps.accounts} />
)