ИМХО большинство ответов до сих пор упустили смысл вопроса Коана, за исключением @Super_Dummy. Позвольте мне остановиться на моих мыслях ...
Скажи, что вместо игры в кости мы подбрасывали монеты. Добавьте еще одно ограничение использования только одной монеты в нашем наборе, и у нас будет минимальный нетривиальный набор, который может генерировать «случайные» результаты.
Если бы мы хотели проверить, что переворот «набора монет» [в данном случае одна монета] каждый раз приводит к разным результатам, мы ожидаем, что значения каждого отдельного результата будут одинаковыми 50 % времени, на статистической основе. Выполнение этого модульного теста через n итераций для некоторых больших n будет просто выполнять PRNG. Он ничего не говорит о существенном равенстве или разнице между двумя результатами.
Другими словами, в этом Коане нас не интересуют значения каждого броска костей. Мы действительно больше обеспокоены тем, что возвращенные рулоны на самом деле являются представлениями разных рулонов. Проверка того, что возвращаемые значения отличаются, является проверкой только первого порядка.
В большинстве случаев этого будет достаточно, но изредка случайность может привести к сбою модульного теста. Это не хорошая вещь ™.
Если в случае, если два последовательных броска возвращают идентичные результаты, мы должны затем проверить, что эти два результата фактически представлены разными объектами. Это позволило бы нам реорганизовать код в будущем [если это было необходимо], и при этом быть уверенным в том, что тесты по-прежнему всегда будут перехватывать любой код, который ведет себя неправильно.
TL; DR?
def test_dice_values_should_change_between_rolls
dice = DiceSet.new
dice.roll(5)
first_time = dice.values
dice.roll(5)
second_time = dice.values
assert_not_equal [first_time, first_time.object_id],
[second_time, second_time.object_id], "Two rolls should not be equal"
# THINK ABOUT IT:
#
# If the rolls are random, then it is possible (although not
# likely) that two consecutive rolls are equal. What would be a
# better way to test this.
end