Skip to content

Instantly share code, notes, and snippets.

@chuckixia
Created February 28, 2018 01:23
Show Gist options
  • Select an option

  • Save chuckixia/7ef922f2d314f48cd45c6378e5ebb497 to your computer and use it in GitHub Desktop.

Select an option

Save chuckixia/7ef922f2d314f48cd45c6378e5ebb497 to your computer and use it in GitHub Desktop.
IO::WaitReadbale has not initializer. Makes mocking and stubbing in minitest hard and annoying
# example to stub out IO::WaitReadable. Spent forever figuring this stupid one out.
class MyError < StandardError
# function to test
def start_ssl_server
begin
@server.accept
rescue IO::WaitReadable
rs,ws,es = Kernel.select([@server], [@server], [@server],10)
retry if rs
raise MyError.new('wubbalubbadubdub')
end
end
# see this http://log.hatenablog.jp/entry/2012/10/01/123105 for a solution for rspec
def test_start_ssl_server_timeout
@server= Minitest::Mock.new
def @server.accept
raise StandardError.new.extend(IO::WaitReadable)
end
Kernel.stub(:select, [nil, nil, nil]) do
assert_raises MyError do
start_ssl_server
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment