I have some methods in my app that make http requests. Is there a good way to simulate network failures and bad responses for the unit tests?
What we do in this situation is abstract the layer that's making the call. Instead of having your logic directly make the http request, have your code call a function. Within that function can be something like:
if (in_test) {
response = get_test_response();
} else {
response = make_http_request();
}
Then you can have your unit tests set some value accessible by the get_test_response() function. This way you can programatically change what the result of that call will be.