在Rspec中有两个变量,它们都是整数,但是在示例中(在“之前”块中),它们中的一个是适当的自己的值,另一个是nil。为什么?!从未听说过这种奇怪的rspec行为。
尝试将0值更改为1 尝试更改变量名称, 尝试将'let'更改为'let!', 但是行为没有改变。
代码是:
context 'when input contains incorrect symbols' do
let(:counter) { 1 }
let(:mocked_retry_count) { 5 }
before do
allow(described_class).to receive(:gets) {
byebug
counter += 1
counter > mocked_retry_count ? 'Stop the loop' : ['$',(0..9).to_a.sample,'#','%','&'].sample
}
described_class.ask_kingdoms
end
end
在byebug的输出中,我看到了
62: let(:counter) { 1 }
63: let(:mocked_retry_count) { 5 }
64: before do
65: allow(described_class).to receive(:gets) {
66: byebug
=> 67: counter += 1
68: counter > mocked_retry_count ? 'Stop the loop' : ['$','&'].sample
69: }
70: described_class.ask_kingdoms
71: end
(byebug) counter
nil
(byebug) mocked_retry_count
5
“ counter”和“ mocked_retry_count”之间的主要区别是什么?以及如何获得示例计数器?