Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Populating instance variables in rspec tests

I have a class which has the following initialise method.

def initialize(my_var)
  @my_var = my_var
end

and I want to test the method which then does something to @my_var

def split
  @my_var.split(",")
end

how do I change @my_var before testing that it returns an array properly?

Is this possible without having an accessor for @my_var?

like image 433
Joseph Le Brech Avatar asked Oct 25 '12 13:10

Joseph Le Brech


1 Answers

This doesn't sound like a correct practice. Rspec should be testing the interface behavior of your classes and models - not the internal implementation (of which instance variables undoubtedly are). There are ways to do this, but are you sure you don't want to have an accessor for that variable?

Anyhow, you can use my_object.instance_variable_get("@my_var") and my_object.instance_variable_set("@my_var", value) to manipulate the variable.

like image 107
PinnyM Avatar answered Sep 16 '22 18:09

PinnyM