2013-01-01 54 views
0

我有一个使用定时器定期调用某个功能的组件。从外面我可以配置该计时器的速率。禁用定时器的单元测试

测试这基本上是微不足道的:设置计时器,等待一段时间,计算对该函数的调用,并与您的预期进行比较。

现在还可以选择禁用定时器。我该如何测试?

等待时间x是不够的,因为定时器可能会在x + 1时调用。

有没有更好的方法?

+0

您是否使用自己的计时器或某些现有的实现? – piotrek

+0

现有的一个,实际上它是JavaScript的'setInterval'函数。 –

回答

1

不要尝试测试您的语言的功能。如果js为您提供方法setInterval,则假定它有效。如果你的代码正确地调用setInterval,你应该测试什么。我对js测试了解不多,但如果可以的话,只需嘲笑它并检查它是否被调用。如果你不能嘲笑它,那么再使用一种间接方式。为定时器创建自己的包装器 - 无需任何逻辑,只需传递调用即可。那么在测试中,你可以检查包装器是否被调用。我会避免在测试中使用等待/睡眠

+0

我不想测试'setInterval'函数,我想测试它是否使用特定的间隔时间进行配置(或者,在我的特殊情况下,完全没有)。 –

+0

等等:如果js API允许你检查setInterval是否被配置/调用,那么直接执行它而不用等待注册函数被触发。如果没有,则创建您自己的图层来注册回调函数,并测试此图层是否已正确配置/调用 – piotrek