2017-05-19 4 views
0

Ich möchte wissen, ob es eine Möglichkeit gibt, innere Komponentenfunktionen zu testen, die nicht in den Requisiten mit Jests Snapshots sind?Testen innere Funktionen mit Jests Snapshots

Für diese Komponente:

class Comp extends Component { 
    state = { 
    ... 
    } 

    handleSomething =() => { 
    doSomething() 
    } 

    render() { 
    return (
     <div> 
     { this.props.foo } 
     <ChildComp onClick={ this.handleSomething } /> 
     </div> 
    ) 
    } 
} 
export default Comp 

Ich versuche, so etwas zu tun:

test('Comp',() => { 
    const component = renderer.create(
    <Comp foo="bar" /> 
) 

    let tree = component.toJSON() 
    expect(tree).toMatchSnapshot() 

    tree.props.handleSomething() // TypeError: tree.props.handleSomething is not a function 
    tree = component.toJSON() 
    expect(tree).toMatchSnapshot() 
}) 

Aber ich bin immer die Art Fehler, da handleSomething nicht Bestandteil Stütze ist.

Gibt es eine Möglichkeit, diese Funktion mit den Snapshots zu testen?

Antwort

1

Sie könnten enzyme verwenden, um die Komponente zu rendern und den Klick auf ChildComp auszulösen.

import { shallow } from 'enzyme' 

test('Comp',() => { 
    const component = shallow(
    <Comp foo="bar" /> 
) 

    component.find('ChildComp').simulate('click') 
    expect(component).toMatchSnapshot() 
}) 

Beachten Sie, dass enzyme-to-json müssen die Snapshot-Funktion Arbeit

machen
Verwandte Themen