Recuperar componente renderizado superficialmente React

React Test Utils permite fazer uma renderização superficial de um componente.

Isso é muito útil para escrever testes de unidade de componentes.

Infelizmente, essa solução é muito limitada.

Por exemplo – o render()método não retorna a instância dos componentes.

É possível recuperá-lo – após a instância de renderização do componente ser armazenada no _instance._instanceatributo de ReactShallowRenderer.

const renderer = TestUtils.createRenderer();
renderer
.render(<MyComponent />);

const component = renderer._instance._instance;

Observe que isso pode não funcionar em todas as situações. Meu palpite (não tentei) é que essa solução alternativa irá falhar quando mais elementos forem renderizados (por exemplo renderer.render(<MyComponent/><div/>).

ShallowRenderer não chama componentDidMountou componentWillUnmountmétodos.

É possível chamá-los quando a instância do componente é obtida do renderizador.

Se o estado do componente mudar, o renderer.getRenderOutput()método incluirá as mudanças.

const renderer = TestUtils.createRenderer();
renderer
.render(<MyComponent />);

const component = renderer._instance._instance;
component
.componentDidMount();

component
.setState({
// ...
});

const output = renderer.getRenderOutput();

Isso deve funcionar no React 0.14.