【问题标题】:Unit test for a disabled timer禁用计时器的单元测试
【发布时间】:2013-01-01 22:16:11
【问题描述】:

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

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

现在还有禁用计时器的选项。我该如何测试呢?

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

有更好的方法吗?

【问题讨论】:

  • 您使用自己的计时器还是一些现有的实现?
  • 一个已有的,实际上是 JavaScript 的 setInterval 函数。

标签: javascript node.js unit-testing


【解决方案1】:

不要尝试测试您的语言的功能。如果 js 为您提供方法 setInterval 则假设它有效。如果您的代码正确调用setInterval,您应该测试什么。我对 js 测试不太了解,但如果可以,请模拟它并检查它是否被调用。如果你不能模拟它,那么使用更多的间接级别。为计时器创建自己的包装器 - 没有任何逻辑,只需传递调用。然后,在测试中,您可以检查是否调用了该包装器。我会避免在测试中使用等待/睡眠

【讨论】:

  • 我不想测试 setInterval 函数,我想测试它是否使用特定的间隔时间配置(或者,在我的特殊情况下,根本没有)。
  • 再次如此:如果 js API 允许您检查 setInterval 是否已配置/调用,则直接执行此操作,而无需等待触发注册函数。如果没有,则创建您自己的层来注册回调函数并测试该层是否配置/调用正确
猜你喜欢
  • 2015-11-15
  • 2011-01-05
  • 1970-01-01
  • 2020-09-29
  • 1970-01-01
  • 2011-08-13
  • 2018-12-07
  • 2017-01-30
  • 2012-01-19
相关资源
最近更新 更多