2017-09-06 10 views
0

私はsetStateを私の機能として定義しています。テストユニットのテスト - setState()

pageChanged(page) { 
     this.setPage(page, false); 

    } 

    setPage(page, isLoading) { 
     var pager = this.state.pager; 
     var totalItems = this.props.totalItems; 

     if (page < 1 || page > pager.totalPages) { 
      return null; 
     } 

     pager = this.getPager(totalItems, page, 6); 

     this.setState({ pager: pager }); 

     if(!isLoading){ 
      this.props.onChangePage(pager.startIndex); 
     } 
    } 

機能pageChanged(page)click時に呼び出されます。次のように機能を設定する機能は、別の関数によって呼び出されます。

onClick={this.pageChanged(page)}

私は成功せずsinon.spyを使用して多くのテストを書く試してみました。テストの進め方に関する助け。

答えて

0
describe('pageChanged',() => { 
    it('expect to call setPage',() => { 
     const wrapper = shallow(<YourComponent />); 
     const page = 'test'; 
     wrapper.instance().setPage = jest.fn(); // mock `setPage` method 
     wrapper.instance().pageChanged(page); 

     expect(wrapper.instance().setPage).toHaveBeenCalledWith(page, false); 
    }); 
    }); 

    describe('setPage',() => { 
    it('expect to change state',() => { 
     const wrapper = shallow(<YourComponent />); 
     const page = 'test'; 
     const pager = '?page=test' 
     wrapper.instance().getPager =() => pager; // mock `getPager` method 
     // it also can be mocked using jest.fn(): 
     // wrapper.instance().getPager = jest.fn().mockReturnValue(pager); 
     wrapper.instance().setPage(page); 

     expect(wrapper.state.pager).toBe(pager); 
    }); 
    }); 
関連する問題