【问题标题】:Jest: Testing random position of an array笑话:测试数组的随机位置
【发布时间】:2014-12-22 03:44:46
【问题描述】:

经过一番研究,我发现 mock 可以让我测试随机值。但是,如何测试在数组(干草堆)上拾取的随机位置(针)的值?

例如,你如何用 Jest 测试这段代码?

var words = ['Hey', 'Hello', 'Hi'];
var random = Math.floor( Math.random() * (words.length - 1) + 0 );
var word = words[random];

【问题讨论】:

  • 你不能真正拥有包含Math.random() 的单元测试。这意味着测试可能有效,也可能失败。想象一下最简单的情况:assertTrue(Math.random() > 0.5);

标签: javascript unit-testing jestjs


【解决方案1】:

Math.random() 不允许你设置种子值,这在测试时会出现问题(check here)。

您可能想寻找可以播种的随机数生成器。这将帮助您获得可重复的集合(至少用于测试)。一篇可能有用的文章是here

【讨论】:

    【解决方案2】:

    虽然这不一定针对Math.random 进行测试,但在这种情况下,我认为可以通过简单地检查值来测试。

    function pick(words) {
      var random = Math.floor( Math.random() * (words.length - 1) + 0 );
      return words[random];
    }
    
    expect(pick(['Hey', 'Hello', 'Hi'])).toMatch(/Hey|Hello|Hi/)
    

    【讨论】:

      猜你喜欢
      • 2019-08-17
      • 2018-08-09
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 2019-07-05
      • 2020-12-15
      • 2021-06-13
      相关资源
      最近更新 更多