开玩笑单元测试-Test 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编写许多测试,但没有成功。关于如何进行测试的任何帮助。

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

最新更新