Javascript 禁用计时器的单元测试

Javascript 禁用计时器的单元测试,javascript,node.js,unit-testing,Javascript,Node.js,Unit Testing,我有一个组件,它定期使用计时器调用函数。从外部我可以配置该计时器的速率 测试这一点基本上很简单:设置计时器,等待一段时间,计算对函数的调用,并与您期望的进行比较 现在还可以选择禁用计时器。我怎么能测试呢 等待时间x是不够的,因为计时器可能在x+1处调用 有更好的方法吗?不要尝试测试您的语言的功能。如果js为您提供了方法setInterval,那么假设它可以工作。如果您的代码正确调用setInterval,您应该测试什么。我不太了解js测试,但如果可以的话,只需模拟它并检查它是否被调用。如果你不能

我有一个组件,它定期使用计时器调用函数。从外部我可以配置该计时器的速率

测试这一点基本上很简单:设置计时器,等待一段时间,计算对函数的调用,并与您期望的进行比较

现在还可以选择禁用计时器。我怎么能测试呢

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


有更好的方法吗?

不要尝试测试您的语言的功能。如果js为您提供了方法
setInterval
,那么假设它可以工作。如果您的代码正确调用
setInterval
,您应该测试什么。我不太了解js测试,但如果可以的话,只需模拟它并检查它是否被调用。如果你不能模仿它,那么再使用一个间接层次。为计时器创建您自己的包装器-无需任何逻辑,只需传递调用。然后,在测试中,您可以检查是否调用了该包装器。我会避免在测试中使用wait/sleep

您是否使用自己的计时器或一些现有的实现?一个现有的,实际上是JavaScript中的
setInterval
函数。我不想测试
setInterval
函数,我想测试它是否使用特定的间隔时间配置(或者,在我的特殊情况下,一点也不)。再次强调:如果js API允许您检查setInterval是否已配置/调用,则直接执行此操作,而不必等待已注册函数被触发。如果没有,则创建您自己的层来注册回调函数,并测试此层是否已正确配置/调用