My rails app talks to a couple different APIs, and I’d like to write tests to make sure that errors are being handled properly in case there is a problem with a request. For example, if the service is down and not reachable.
Is there a way I can simulate an error coming back from a service even though it might be fine during the test?
The webmock gem helps you with this. For your specific question scroll down to “Response with custom status message”.
I’ve used this gem with Rspec and Test::Unit. The biggest drawback is that the matching logic which decides what requests apply to a particular mock doesn’t always work as you’d expect. It’s a minor gripe though. The gem is a net-positive, and much better than trying to hit a live service from a test case.