使用bxSlider和Mocha进行测试如何避免使用setTimeout等待幻灯片转换?

时间:2014-07-21 15:17:56

标签: integration-testing mocha bxslider

我正在使用BxSlider并使用mocha和testem编写集成测试。

如果从幻灯片0开始,然后连续两次调用:slider.goToNextSlide(); slider.goToNextSlide(); ,它只前进到幻灯片1,而不是幻灯片2.

发生这种情况是因为bxslider在允许另一个goToNextSlide()调用之前等待转换到下一张幻灯片完成。

我正在编写自动化测试,我真的不想在测试中使用setTimeout()来等待转换完成。设置BxSlider.speed = 0不起作用,它会打破滑块。 .speed = 1仍然需要等待转换完成才能调用下一个goToNextSlide()

如何在这种情况下避免使用setTimeout()进行自动化测试?

1 个答案:

答案 0 :(得分:0)

您可以使用存根API来存根setTimeout。

例如,sinon.js允许你通过存根所有依赖于时间的函数来伪造时间。

http://sinonjs.org/docs/#clock

只需使用

var clock = sinon.useFakeTimers();

然后,当你想要及时前进时:

clock.tick(timeInMilliSeconds);

我希望这会有所帮助。