I’m building an http communicator class for a web service API wrapper
I’m trying to go through the BDD process in doing so. I’m having a bit
struggle figuring out how to set up the tests in relation to isolating
things appropriately as well as testing behavior vs testing
Specifically, I’m trying to set up a post method on my HttpCommunicator
have the following:
describe FamilyTreeApi::HttpCommunicator, “post” do
it “should accept an endpoint and an xml string to post” # I’m okay with
it “should perform post content to given endpoint”
it “should return a response object”
I have written/passed the tests for the first spec, but I’m having
figuring out how to verify behavior for the second and third, and how to
mock/stub it up. I’ll be using the ‘net/https’ standard libraries to
implement the POST action, and I know that it requires the use of a URI
instance, a Net::HTTP instance, and a Net::HTTP::Post request instance.
I don’t want to hit the actual web service each time I run the test, so
like to stub or mock this in some way. I think I just need some guidance
how to approach something like this.
Do I just ignore the implementation details?
Do I push the actual posting of data to a private method and mock that
method so that I can verify that it is being called?
Would you recommend I actually hit the web service?
Any help is greatly appreciated.