Ruby Rspec: prueba las variables de instancia sin agregar un elemento de acceso a la fuente
instance-variables (1)
Estoy tratando de probar el siguiente método:
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
donde quiero establecer el estado para @multi_move, pero no quiero agregar un descriptor de acceso solo para probar. ¿Hay alguna manera de hacerlo sin el accesorio? Gracias.
Puede usar Object#instance_variable_get
método Object#instance_variable_get
para obtener el valor de cualquier variable de instancia del objeto así:
class Foo
def initialize
@foo = 5 # no accessor for that variable
end
end
foo = Foo.new
puts foo.instance_variable_get(:@foo)
#=> 5
Y el Object#instance_variable_set
se puede usar para establecer valores de variables de instancia:
foo.instance_variable_set(:@foo, 12)
puts foo.instance_variable_get(:@foo)
#=> 12