我是一个新手,红宝石和IM努力学习与RubyKoans但我得到stucked与这个测试相同的随机数红宝石
def test_dice_values_should_change_between_rolls
48 dice = DiceSet.new
49 dice.roll(5)
50 first_time = dice.values
51
52 dice.roll(5)
53 second_time = dice.values
54
55 assert_not_equal first_time, second_time,
56 "Two rolls should not be equal"
57 end
,这是DiceSet类
5 class DiceSet
6 attr_accessor :values
7 ··
8 def initialize
9 @values = []
10 end
11
12 def roll(times)
13 @values.clear
14 times.times do |x|
15 @values << (1 + rand(6))
16 end
17 end
18 ····
19 end
的东西在这里每当我运行代码时,它总是生成完全相同的一组数字,这就是输出。
Two rolls should not be equal. <[3, 2, 4, 1, 3]> expected to be != to <[3, 2, 4, 1, 3]>.
测试IM调用DiceSet.roll两次,并为那些两次我得到完全相同的一组“随机”数
时,他们supossed是diferent吧?我想我可能会创建DiceSet的另一个实例,以通过测试,但我猜测这不是测试的目标
对于这个工作,你需要做的'FIRST_TIME = Array.new(dice.values)'和'second_time = Array.new(dice.values)' –
我与你古斯塔沃。我想节省内存并重复使用相同的Array。不幸的是,koans的设计者忘记了等式首先检查引用,然后检查实例变量。解决这个引用问题的一个可能的方法是将'first_time = dice.values'改为'first_time = dice.values.clone'。但是这并不能解决这样一个事实,即无论如何这次测试都会失败。 –