gaq*_*qzi 8 ruby testing rspec
我一直在尝试open使用open-uri版本,而且我没有成功.
我已尝试执行以下操作但请求仍在继续:
Kernel.should_receive(:open).and_return("Whatever for now")
Run Code Online (Sandbox Code Playgroud)
我也尝试过
OpenURI::OpenRead.should_receive(:open).and_return("Whatever for now")
Run Code Online (Sandbox Code Playgroud)
自从我跟踪了在OpenURI中发出HTTP请求的地方.
在此先感谢您的任何建议!
bon*_*iii 12
这就是我的工作
class Gateway
def do_something
open('http://example.com').read
end
end
Run Code Online (Sandbox Code Playgroud)
在我的规范中,我执行以下操作:
describe 'communication' do
it 'should receive valid response from example.com' do
gateway = Gateway.new
gateway.stub_chain(:open, :read).and_return('Remote server response')
gateway.do_something.should == "Remote server response"
end
end
Run Code Online (Sandbox Code Playgroud)
经过一段时间在Google上我找到了Stack Overflow的解决方案(我不相信我之前没有找到这个).
从这里解释并由Tony Pitluga撰写(不可链接).
如果你在一个对象的上下文中调用sleep,你应该将它存在于对象上[...]
关键是,在调用sleep的上下文中的任何"self"上存根.
所以我做了这一切,这一切都成功了:
let(:read) { mock('open') }
it "should return the new log-level when the log level was set successfully" do
read.stub(:read).and_return('log-level set to 1')
kannel.should_receive(:open).and_return(read)
kannel.set_log_level(1).should == 1
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5258 次 |
| 最近记录: |