Я новичок в тестировании стратегий и насмешках, и мне трудно понять, как имитировать вызов внешней службы. Я уверен, что мне чего-то не хватает, я просто не знаю, что именно.
Я использую гем Braintree для взимания платы за услуги подписки через шлюз Braintree, и я хотел смоделировать метод создания клиента и метод создания подписки в методе создания моего UserController.
Метод Customer.create выглядит примерно так:
result = Braintree::Customer.create(
:first_name => @creditcard.first_name,
:last_name => @creditcard.last_name,
:email => @user.email
:credit_card => {
...
}
}
)
Это возвращает объект результата Braintree::Successful с атрибутами обработанного результата.
Я полагаю, что мне нужно сделать что-то вроде:
Braintree::Customer.expects(:create).returns(...)
Но что происходит в зоне возврата? Нужно ли мне создавать свой собственный смоделированный объект Successful с атрибутами поддельного обработанного результата, или есть более простой способ сделать все это?
Спасибо за любую помощь, которую вы можете предоставить.