I'm new to testing strategies and mocking, and I'm having a tough time figuring out how to mock a call to an external service. I'm sure it's something easy I'm missing, I just don't know what exactly.
I'm using the Braintree gem to charge for subscription services through the Braintree gateway, and I wanted to mock the Customer create method and Subscription create method in my UserController's create method.
A Customer.create method looks something like this:
result = Braintree::Customer.create(
:first_name => @creditcard.first_name,
:last_name => @creditcard.last_name,
:email => @user.email
:credit_card => {
...
}
}
)
This returns a Braintree::Successful result object, with the attributes of the processed result.
I figure I have to do something like:
Braintree::Customer.expects(:create).returns(...)
But what goes in the returns area? Do I need to create my own mocked up Successful object with the attributes of a faked processed result, or is there an easier way to do all of that?
Thanks for any help you can provide.