ruby rspec instance-variables

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