2017-01-05 49 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> 
); 
}; 

我試過以下,但得到一個錯誤說:類型錯誤:未定義是不是構造

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

哪一行會拋出'TypeError'? '淺層'或'instance()'? –

+0

實例()行 – Ian

+0

通常您不會測試私有函數。在這個特定情況下,你應該點擊按鈕並檢查它是否做了它應該做的事情。 –

回答

1

我通常通過設置測試此功能a 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事件。

相關問題