gpt4 book ai didi

ruby - 如何使用 rspec 调用检查 block

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

我想使用 rspec 检查我的函数中是否调用了该 block 。下面是我的代码:

class SP
def speak(options={},&block)
puts "speak called"
block.call()
rescue ZeroDivisionError => e
end
end




describe SP do
it "testing speak functionality can receive a block" do
sp = SP.new
def test_func
a = 1
end
sp_mock = double(sp)
expect(sp_mock).to receive(:speak).with(test_func)
sp.speak(test_func)
end
end

以下是我的错误:

SP testing speak functionality can receive a block
Failure/Error: block.call()

NoMethodError:
undefined method `call' for nil:NilClass
# ./test.rb:9:in `speak'
# ./test.rb:25:in `block (2 levels) in <top (required)>'

你能帮忙吗?我在这方面花了很多时间。

最佳答案

您必须使用 RSpec 的 yield matcher 之一:

describe SP do
it "testing speak functionality can receive a block" do
sp = SP.new
expect { |b| sp.speak(&b) }.to yield_control
end
end

关于ruby - 如何使用 rspec 调用检查 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44598091/

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