我想写这将导致一个RSpec的测试像这样通过一个方法:删除项目不还
it "starts the thing and move on" do
class.method_1("Name One")
class.method_1("Name Two")
expect(class.method_2).to eq "Some string Name One"
expect(class.method_3).to eq ["Name Two"]
end
method_1
只是增加了一个名字到一个数组,并method_3
返回数组(在initialize
方法定义):
def method_1(name)
@array << name
end
def method_3
@array
end
我想这将是相当简单的内插@array[0]
到字符串并使用@array.delete_at(0)
修改数组。像这样:
def method_2
p "Some string #{@array[0]}"
@array.delete_at(0)
end
但是该方法返回"Name One"
而不是字符串。如果我注释掉删除代码,该字符串会正确返回,但我的数组尚未修改。我已经在Ruby文档很长一段时间,但#shift
有关于返回已删除的项目相同的问题。
我几乎可以肯定我已经复杂了 - 我错过了什么?
我不敢相信我没有想到将'@ array.shift'集成到代码的打印行中。感谢您的帮助和对退货的澄清。你说得对,'method_3'可以很容易地成为内联块,但是之前的测试需要定义。 –
其他编程语言对可以插入的内容有严格的限制,所以如果你没有考虑这样做可以。可以是你永远不会想到的挑战。在Ruby中,您可以在其中插入*任何有效的代码块。 – tadman