使用笑话和酶进行单元测试setInterval函数

时间:2020-10-29 13:03:19

标签: reactjs jestjs enzyme setinterval

我正在测试一个应处理setInterval函数的react应用。

React方法和测试用例如下(尝试测试createCharts)。

反应方法

createCharts=function(pages,idNumbers){
         let pageIds=Object.keys(pages);
         let i=0;
         let timer=setInterval(()=>{
            if(i<pageIds.length){
                document.getElementById(pageIds[i]).click();
                let charts=pages[pageIds[i]]["charts"];
                let ids=Object.keys(charts);
                for(let id of ids){
                    this.idNumbersTransfer((this.state.idNumbers));
                }
            }

            else if(i==pageIds.length){
                clearInterval(timer);
            }
            i++;

        },1000)

    }

反应测试用例

it("testing function createCharts", () => {
        let spy=jest.spyOn(wrapper.instance(),'idNumbersTransfer');
        spy.mockImplementation(()=>{
            console.log("idNumbersTransfer is called");
        })
        let pages={
            page1:
                {
                    charts:{
                        BarChart1:{
                            id:"BarChart1",
                            idNumber:1,
                            pageId:"page1"
                        }
                    }
                }
            };
        let idNumbers={};
        wrapper.instance().createCharts(pages,idNumbers);
        expect(spy).toHaveBeenCalled();
        spy.mockRestore();

    })

我尝试测试createCharts方法,但它既没有调用idNumbersTransfer,也没有进入setInterval方法。有人可以帮忙测试反应中的计时器方法吗?

0 个答案:

没有答案