我正在使用React-Redux构建一个琐事游戏应用程序,并且需要能够渲染一个TriviaCard组件,如果用户决定再次玩,它将启动一个新游戏.这是我的按钮......
所以,我有两个按钮,需要能够在我的handleSubmit函数中做这样的事情......
<button onClick={this.handleSubmit} name="yes">Yes</button>
<button onClick={this.handleSubmit} name="no">No</button>
handleSubmit = (event) => {
const answer = event.target.name
if (answer === "yes") {
return <TriviaCard />
} else {
//Do nothing...
}
}
Run Code Online (Sandbox Code Playgroud) 我的 componentDidMount 中有一个操作,它在 30000 毫秒后从 Reddit 获取图像。我想测试这个但无法弄清楚?!?!有什么建议?
componentDidMount() {
this.getHumorEvery(30000)
}
getHumorEvery = async (ms) => {
await this.props.getHumor()
return setInterval(() => {
this.props.getHumor()
}, ms)
Run Code Online (Sandbox Code Playgroud)
所以 getHumor() 立即被调用。然后在 30000 毫秒后再次调用它,依此类推。
然后我的测试...
it('should refetch images every 30000 ms', () => {
const clock = sinon.useFakeTimers();
const getHumorSpy = sinon.spy();
renderComponent(requiredProps({ getHumor: getHumorSpy }));
clock.tick(30000)
sinon.assert.calledTwice(getHumorSpy)
Run Code Online (Sandbox Code Playgroud)
})
测试失败,因为 getHumor 只被调用一次。setInterval() 永远不会被解雇?