gpt4 book ai didi

lambda - Rspec 模拟 : mock/yield the block from a method call

转载 作者:行者123 更新时间:2023-12-02 14:52:07 25 4
gpt4 key购买 nike

我有这个代码:

Net::SSH.start(@server, @username, :password => @password) do |ssh|
output = ssh.exec!(@command)
@logger.info 'SSH output: '
@logger.info output
end

我可以像这样使用 RSpec 的模拟框架来模拟 SSH.Start,以告诉我我已经启动了 SSH session :

Net::SSH.should_receive(:start).with("server", "user", :password => "secret") do
@started = true
end


<p>this tells me whether or not i've @started the ssh session. now I need to mock the ssh.exec! method, which is easy enough:</p>

Net::SSH.should_receive(:exec!).with("command")...

但是我如何产生/调用包含 ssh.exec 的 block !方法调用,因为我已经模拟了 SSH.start 方法?我可能可以调用一些简单的方法来执行这个 block ,但我不知道它是什么,也找不到关于 rspec 模拟框架的任何真正好的解释/文档。

最佳答案

Net::SSH.should_receive(:start).with(
"server", "user", :password => "secret").and_yield(
"whatever value the block should yield")

不确定为什么需要设置@started,因为should_receive会验证该方法是否已被调用。

关于lambda - Rspec 模拟 : mock/yield the block from a method call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1580084/

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