I'm building an http communicator class for a web service API wrapper and I'm trying to go through the BDD process in doing so. I'm having a bit of a struggle figuring out how to set up the tests in relation to isolating things appropriately as well as testing behavior vs testing implementation.
<br><br>Specifically, I'm trying to set up a post method on my HttpCommunicator so I have the following:<br><br>describe FamilyTreeApi::HttpCommunicator, "post" do<br>it "should accept an endpoint and an xml string to post" # I'm okay with this one
<br>it "should perform post content to given endpoint"<br>it "should return a response object"<br>end<br><br>I have written/passed the tests for the first spec, but I'm having troubles 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.
<br><br>I don't want to hit the actual web service each time I run the test, so I'd like to stub or mock this in some way. I think I just need some guidance on how to approach something like this.<br><br>Do I just ignore the implementation details?
<br>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? <br>Would you recommend I actually hit the web service?<br><br>Any help is greatly appreciated.
<br>-- <br>Jimmy Zimmerman<br><a href="http://jimmyzimmerman.com/blog/">http://jimmyzimmerman.com/blog/</a>