8
我有一个具有以下初始化方法的类。在rspec测试中填充实例变量
def initialize(my_var)
@my_var = my_var
end
,我想测试,然后做一些事情来@my_var
def split
@my_var.split(",")
end
的方法我怎么测试它正确返回一个数组前更改@my_var
?
这可能没有访问者@my_var
?
我有一个具有以下初始化方法的类。在rspec测试中填充实例变量
def initialize(my_var)
@my_var = my_var
end
,我想测试,然后做一些事情来@my_var
def split
@my_var.split(",")
end
的方法我怎么测试它正确返回一个数组前更改@my_var
?
这可能没有访问者@my_var
?
这听起来不像是一种正确的做法。 Rspec应该测试你的类和模型的接口行为 - 而不是内部实现(无疑是哪个实例变量)。有办法做到这一点,但你确定你不想拥有该变量的访问器?
无论如何,您可以使用my_object.instance_variable_get("@my_var")
和my_object.instance_variable_set("@my_var", value)
来操纵变量。
我这样做的原因是,我的初始化方法是从文件读取,我试图做的是存根'文件',并从该文件写入预期的处理数据,而不需要文件来支持我的测试。然后我可以跳过这个初始化方法来测试我班的其他方法。 –
@JosephLeBrech,你也可以尝试使用StringIO而不是文件 – faron