Created
February 28, 2018 01:23
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 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