我正在使用BxSlider并使用mocha和testem编写集成测试。
如果从幻灯片0开始,然后连续两次调用:slider.goToNextSlide(); slider.goToNextSlide(); ,它只前进到幻灯片1,而不是幻灯片2.
发生这种情况是因为bxslider在允许另一个goToNextSlide()调用之前等待转换到下一张幻灯片完成。我正在编写自动化测试,我真的不想在测试中使用setTimeout()来等待转换完成。设置BxSlider.speed = 0不起作用,它会打破滑块。 .speed = 1仍然需要等待转换完成才能调用下一个goToNextSlide()
如何在这种情况下避免使用setTimeout()进行自动化测试?
答案 0 :(得分:0)
您可以使用存根API来存根setTimeout。
例如,sinon.js允许你通过存根所有依赖于时间的函数来伪造时间。
http://sinonjs.org/docs/#clock
只需使用
var clock = sinon.useFakeTimers();
然后,当你想要及时前进时:
clock.tick(timeInMilliSeconds);
我希望这会有所帮助。