最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Jest unit testing - test setState() - Stack Overflow

programmeradmin1浏览0评论

I have defined setState in my function. The function setting the function is called by another function as follows :

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

The function pageChanged(page) is called upon click.

onClick={this.pageChanged(page)}

I have tried writing many tests using sinon.spy but without success. Any help on how to proceed with the test.

I have defined setState in my function. The function setting the function is called by another function as follows :

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

The function pageChanged(page) is called upon click.

onClick={this.pageChanged(page)}

I have tried writing many tests using sinon.spy but without success. Any help on how to proceed with the test.

Share Improve this question asked Sep 6, 2017 at 14:58 Anup RajAnup Raj 1253 gold badges4 silver badges12 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 3
  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);
    });
  });
发布评论

评论列表(0)

  1. 暂无评论