2017-01-05 10 views
7

私は反応成分をテストするために酵素を使用しています。私は内部機能を持つステートレスコンポーネントを持っています。その内部機能をどのように呼び出してテストできますか?ここで反応する酵素でステートレスコンポーネントに定義された内部関数をテストする方法

私のコンポーネントです:

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> 
); 
}; 

私は次のことを試してみたが、エラーが言ってます:例外TypeError:未定義のコンストラクタ

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

どの行が 'TypeError'をスローしますか? 'shallow'または' instance() '? –

+0

instance()行 – Ian

+0

通常、私的機能はテストしません。この特定のケースでは、あなたのボタンをクリックして、それが何をすべきかどうかをチェックする必要があります。 –

答えて

1

ではありません、私は通常、設定することで、この機能をテストイベントのsinon.spy

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

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

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

内部関数が実際にprops.onClickというイベントを呼び出すのは、その作業の最も重要な部分です。

関連する問題