Ruby Rspec:testing实例variables而不添加访问者到源

我试图testing下面的方法:

def unprocess_move(board, move) if move[0].instance_of?(Array) multi_move = @multi_move.pop(2).reverse multi_move.each do |single_move| unapply_move(board, single_move) end else board = unapply_move(board, move) end board end 

我想为@multi_move设置状态,但是我不想添加一个访问器来进行testing。 没有访问器有没有办法做到这一点? 谢谢。

您可以使用Object#instance_variable_get方法来获取Object#instance_variable_get的任何实例variables的值:

 class Foo def initialize @foo = 5 # no accessor for that variable end end foo = Foo.new puts foo.instance_variable_get(:@foo) #=> 5 

Object#instance_variable_set可以用来设置实例variables值:

 foo.instance_variable_set(:@foo, 12) puts foo.instance_variable_get(:@foo) #=> 12