在rspec测试中填充实例变量

时间:2012-10-25 13:20:22

标签: ruby rspec stubbing

我有一个具有以下初始化方法的类。

def initialize(my_var)
  @my_var = my_var
end

我想测试一下这个方法,然后对@my_var

做一些事情
def split
  @my_var.split(",")
end

如何在测试之前更改@my_var它是否正确返回数组?

如果没有@my_var的访问者,是否可以这样做?

1 个答案:

答案 0 :(得分:25)

这听起来不像是正确的做法。 Rspec应该测试类和模型的接口行为 - 而不是内部实现(毫无疑问是实例变量)。有办法做到这一点,但你确定你不想拥有该变量的访问者吗?

无论如何,您可以使用my_object.instance_variable_get("@my_var")my_object.instance_variable_set("@my_var", value)来操纵变量。