gpt4 book ai didi

ruby - 你如何模拟 RSpec 中的 break 语句?

转载 作者:太空宇宙 更新时间:2023-11-03 16:52:57 24 4
gpt4 key购买 nike

我遇到了一个问题,当示例到达 break 语句时会引发 LocalJumpError。有谁知道如何消除 break,或者这是否是正确的方法?

方法:

def foo(file_name, limit)
CSV.foreach(file_name, col_sep: "|") do |row|
row_count += 1
do something...
break if row_count >= limit
end
end

规范:

it 'does not exceed the limit' do
CSV.should_receive(:foreach).with(file_name, col_sep: "|") do |&block|
block.call(header_fields)
block.call(data)
end
foo(file_name, 2)
end

最佳答案

我可能会考虑做这样的事情作为集成类型的测试:

def foo(file_name, limit)
CSV.read(file_name, col_sep: "|").each_with_index do |row, index|
if index < limit
#do something...
end
end
end
end

it 'does not exceed the limit' do
filename = 'path/to/file.csv'
file = CSV.read(filename)
file_length = file.size
last_line = file.last

output = foo(filename, file_length - 1)

expect(output.last).to_not contain(last_line)
end

在此解决方案中,您仍然遍历 CSV 的每一行,但如果超出限制则忽略该行。这并不理想,但这是一种可行的方法。

测试会将限制设置为比文件长度小一,然后检查是否处理了最后一行。

断言不太正确 - 这将取决于您的# do something 操作。

关于ruby - 你如何模拟 RSpec 中的 break 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16885711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com