0

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

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

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

2 回答 2

0

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

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

于 2014-12-22T03:52:07.297 回答
0

虽然这不一定针对 进行测试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/)
于 2017-09-07T08:36:15.223 回答