【发布时间】:2014-05-17 21:02:07
【问题描述】:
我的规格有:
describe "can translate" do
let(:from){591}
it "#{from}" do
expect(Translator.three_digits(from)).to eq 'five hundred ninety two'
end
end
但是 591 是硬编码和重复的,我想消除它...
那么如何在it 描述中引用from?
我试过let(:from){591}
然后使用it "#{@from}" 但这并没有显示出来
我也尝试过使用it "#{from}",但由于它正在寻找一个局部范围的变量,所以会报错undefined local variable or method
'from' for #<Class:0x00000001bc4110> (NameError)。
我可以通过常量避免所有这些范围问题,即
describe "can translate" do
FROM=592
it "#{FROM}" do
expect(Translator.three_digits(FROM)).to eq 'five hundred ninety two'
end
end
当我得到一个错误时,我实际上得到了A ruby file called translator.rb can translate 591(或任何数字,关键是它打印出来的结果与我对变量的所有尝试不同)。
`
但这似乎是一个糟糕的方法。我更喜欢尽可能避免使用常量,并且我想连续对多个值进行此测试,因此我需要一些可以根据情况更改的内容,而 CONSTANT 似乎不合适。
我之前也尝试过 :all 同时使用局部变量和实例变量,但没有成功。
如果我对它进行硬编码并将 591 作为文本并且测试失败,那么 591 会打印出来,这就是我想要的。但是,尽管我也在测试中使用了任何变量,但我无法获得相同的结果。
【问题讨论】: