Jest: проверка случайного положения массива

После некоторых исследований я обнаружил, что насмешка позволяет мне тестировать случайные значения. Однако как мне проверить значение случайной позиции (иголки), выбранной в массиве (стоге сена)?

Например, как протестировать этот код с помощью Jest?

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

person srph    schedule 22.12.2014    source источник
comment
У вас не может быть модульных тестов, в которых есть Math.random(). Это означает, что тест может сработать, а может и провалиться. Представьте простейший случай: assertTrue(Math.random() > 0.5);   -  person Halcyon    schedule 22.12.2014


Ответы (2)


Math.random() не позволяет вам установить начальное значение, это будет проблематично в случае тестирования (проверьте здесь).

Возможно, вы захотите найти генератор случайных чисел, который можно засеять. Это поможет вам получить повторяемый набор (по крайней мере, для тестирования). Одна статья, которая может быть полезна, находится здесь.

person nitishagar    schedule 22.12.2014

Хотя это не обязательно проверяется на 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/)
person srph    schedule 07.09.2017