Come attendere la completa rendering di componente reagire in Mocha utilizzando Enzyme?

voti
6

Ho un Parentcomponente che rende un Childcomponente. Il Childprimo componente rende puntelli uniche come 'nome' e quindi il componente principale rende puntelli comuni come 'tipo' e inietta tali puntelli nel Childcomponente utilizzando React.Children.map.

Il mio problema è che enzima non è in grado di rilevare gli oggetti di scena comuni resi dal Section componente, quindi non posso verificare efficacemente se i puntelli comuni vengono aggiunti.

Il test:

      const wrapper = shallow(
        <Parent title=Test Parent>
          <div>
            <Child
              name=FirstChild
            />
          </div>
        </Parent>
      )
//      console.log(wrapper.find(Child).node.props) <- returns only name in the object
      expect(wrapper.find(Child)).to.have.prop(commonPropOne)
      expect(wrapper.find(Child)).to.have.prop(commonPropTwo)
      expect(wrapper.find(Child)).to.have.prop(commonPropThree)

Il codice per iniettare puntelli comuni:

const Parent = (props) => (
  <div
    className=group
    title={props.title}
  >
    { React.Children.map(props.children, child => applyCommonProps(props, child)) }
  </div>
)

È pubblicato 20/05/2016 alle 17:03
fonte dall'utente
In altre lingue...                            


2 risposte

voti
2

È possibile utilizzare il timer per impostare un evento che tirare su un evento che sarà dopo gli altri. È necessario chiamare in causa fatto manualmente utilizzando questo metodo.

describe('<MyComponent />', () => {
  it('My test.', (done) => {
    const wrapper = mount(<MyComponent />);

    setTimeout(() => {
      expect(wrapper).toMatchSnapshot();
      done();
    }, 1);
  });
});

Reagire: Attendere la completa il rendering in fase di test snapshot

Risposto il 05/05/2017 a 17:14
fonte dall'utente

voti
2

Si dovrà utilizzare dell'enzima monte .

mountti dà il pieno il rendering DOM quando è necessario attendere che i componenti per rendere i bambini, piuttosto che solo il rendering di un singolo nodo come shallow.

Risposto il 21/05/2016 a 00:51
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more