作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试测试一个在 TweenMax 动画之后改变状态的组件。浏览器上一切正常,但我无法理解如何为其编写测试。
问题是Jest不会等待动画完成,因此状态不会改变。
我也尝试过 jest.runAllTicks()和 jest.runAllTimers()
这里有一些代码最终会模拟我正在做的事情:
class HelloWorld extends React.Component {
constructor(props) {
super(props);
this.state = { done: false };
this.p;
}
componentDiDMount() {
TweenMax.to(ReactDOM.findDOMNOde(this.p), 1, {
onComplete: () => {
this.setState({ done: true })
}
})
}
renderMessage() {
if (this.state.done) {
return "Hello World";
} else {
return "Loading...";
}
}
render () {
return <p ref={p => this.p = p}>{this.renderMessage()}</p>;
}
}
describe("test",()=>{
it("works", ()=>{
const component = mount(<HelloWorld />);
// ...wait some time (or pretend to)
expect(component.find(p).text()).toEqual("Hello World");
})
})
最佳答案
深入研究Jest文档,我发现您可以指定一个done
参数,该参数将强制测试等待done()
被调用。
这样就可以设置超时并等待动画完成。
参见Jest callbacks documentation
describe("test",() => {
it("works", done => {
const component = mount(<HelloWorld />);
setTimeout(() => {
expect(component.find(p).text()).toEqual("Hello World");
done();
}, 1100);
})
})
关于reactjs - 如何使用 React Jest 时间旅行到动画结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50367224/
我正在制作一个应用程序,我在其中为每个国家/地区分配不同的值并根据该值执行某些操作。喜欢: Argentina 3 Australia 7 USA 23 要选择国家/地区,我需要使用用户当前所在的国家
这里是一般 Node mongodb 问题。 我有这个功能: static addSpaceToCreator = ( userId, spaceId, callback ) => {
Linux 中的 tcp 数据路径是否有很好的概述(2.6,如果路径实际不同则不是 2.4)?在 tcp/ip 堆栈处理的不同阶段,数据包在哪里? 数据包如何打包到tcp段,然后是ip数据包。它是如何
我是一名优秀的程序员,十分优秀!