2016-02-26 62 views
0

我有我想測試一個無狀態的成分反應成分測試交互使用shalllow渲染

const PageSizer = ({itemsPerPage, onItemsPerPageChange}) => (
    <form> 
     <label>Items Per Page </label> 
     <select value={itemsPerPage} onChange={(e) => {onItemsPerPageChange(e.target.value) }}> 
      <option value="10">10</option> 
      <option value="25">25</option> 
      <option value="50">50</option> 
      <option value="100">100</option> 
     </select> 
    </form>) 

我想測試,當選擇值爲改變它觸發onItemsPerPageChange回調與期權的價值。

我發現通過試驗和錯誤renderIntoDocument不作爲其無狀態組件。

使用淺層渲染如何測試?

我想出了

it('should call onItemsPerPageChange when select value is changed',() => { 

    var spy = expect.createSpy(); 

    var shallowRenderer = TestUtils.createRenderer(); 
    shallowRenderer.render(<PageSizer onItemsPerPageChange={spy} />) 
    var result = shallowRenderer.getRenderOutput(); 

    var select = result.props.children[1] 
    TestUtils.Simulate.change(select, { target: { value: 25 } }); 

    expect(spy).toHaveBeenCalledWith(25) 
}); 

的間諜不會被調用雖然。我做對了嗎?

回答