2017-08-03 196 views
0

後的狀態,我真的很困惑試圖以玩笑的文檔的幫助下https://facebook.github.io/jest/docs/timer-mocks.html#content玩笑反應測試:檢查延遲

我想檢查的狀態容器的坐騎,然後幾秒鐘後,以後當我創建測試手動設置狀態值(使用setTimeout())。

我有這樣主要的componentDidMount裏面的函數:

componentDidMount() { 
    this.setStateAfterDelay(); 
} 

什麼函數的作用是:

const component = mount(<Main />); 
expect(component.state().fruits).toEqual(null); 

但是:

setStateAfterDelay =() => { 
    setTimeout(() => { 
     this.setState({ fruits: ['banana', 'apple', 'orange', 'vodka', 'kiwi'] }); 
    }, 1500); 
} 

我所取得的第一部分我不知道如何再次檢查狀態,讓我們說2000ms?

任何幫助表示讚賞:)

回答

3

我還沒有真正測試過這段代碼。但是,我認爲,應該這樣做。

const fruits = ['banana', 'apple', 'orange', 'vodka', 'kiwi']; 

it('mock setTimeout test',() => { 
jest.useFakeTimers(); 
setTimeout(() => { 
    expect(component.state().fruits).toEqual(fruits); 
}, 1500); 
jest.runAllTimers(); 
}); 
+0

是的,這似乎工作好!我認爲有一些瘋狂的單元測試語法來實現這一點。謝謝! –

+0

lol typeof伏特加==水果 – phillyslick