2017-01-05 4 views
7

definiert sind Ich verwende Enzym, um meine reagierenden Komponenten zu testen. Ich habe eine staatenlose Komponente, die eine innere Funktion hat. Wie kann ich diese innere Funktion anrufen und testen?Wie innere Funktionen zu testen, die auf zustandslosen Komponenten in Reaktion mit Enzym

Hier ist meine Komponente:

const Btn = (props) => { 
    const types = ['link', 'plainLink', 'primary', 'secondary', 'danger', 'info']; 

    const handleClick = (event) => { 
    event.preventDefault(); 
    props.onClick(event); 
    }; 

    return (
    <button onClick={handleClick} className={classes}> 
     <span>{props.children}</span> 
    </button> 
); 
}; 

ich folgendes versucht haben, aber einen Fehler zu sagen: Typeerror: undefined ist kein Konstruktor

const btnComp = shallow(<Btn />); 
btnComp.instance().handleClick(); 
+0

Welche Zeile wirft den 'TypeError'? die 'shallow' oder die' instance() '? –

+0

Die Zeile instance() – Ian

+0

Im Allgemeinen testen Sie keine privaten Funktionen. In diesem speziellen Fall solltest du einen Klick auf deinen Button machen und überprüfen, ob er getan hat, was er hätte tun sollen. –

Antwort

1

ich diese Funktionalität in der Regel testen, indem Sie ein sinon.spy für die Veranstaltung: Jetzt

const click = sinon.spy(); 
const btnComp = shallow(<Btn onClick={click} />); 

btnComp.find('button').simulate('click'); 

expect(click.called).to.equal(true); 

, Sie wissen, dass die innere Funktion in der Tat das props.onClick Ereignis ausgelöst hat, welches das wichtigste Bit ihrer Arbeit ist.

Verwandte Themen