title: Rails External API Testing
body: <p>I'm writing tests for my Rails app. My app communicates with an external API that processes customer payments, specifically BrainTree. Now, I want to make sure my app's class that communicates with BrainTree works properly e.g. that it submits user information and other parameters to BrainTree correctly. Making the goal to only test that BrainTree and my App are communicating properly. </p>
  
  <p>One thing to note, is that BrainTree has a sandbox account. To test my class, should I:</p>
  
  <ul>
  <li>Write a feature test using something like Capybara and Rspec and test it from a user's perspective e.g. user logs in, fills out form, submits payment etc. </li>
  <li>Write a request spec that just submits the required information and examines the return values. This is what I would prefer but is tricky since BrainTree requires js, and I am not sure I can do have js in a request spec without monkey patching Rspec, which I'd rather not do since I am still fairly new to Rspec and testing in general. </li>
  <li>Write both feature and request specs</li>
  <li>Write a completely different type of test</li>
  </ul>
  
  <p>I have a feature test in place, but it seems cumbersome to use to just test an external API since it needs to open a browser, fill out forms, etc. in my feature spec I'd rather stub the external API and test the API as a unit test. A request spec seems more efficient but the js requirement seems like a roadblock.</p>
  
  <p>Is there a Best Practice to what I should do in my scenario above?  </p>