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