2017-08-03 112 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