Ich bin neu in Teststrategien und Mocking, und ich habe eine harte Zeit herauszufinden, wie man einen Aufruf an einen externen Dienst zu spotten. Ich bin sicher, es ist etwas einfach, ich bin fehlt, ich weiß nur nicht, was genau.
Ich verwende das Braintree-Gem, um für Abonnementdienste über das Braintree-Gateway aufzuladen, und ich wollte die Customer create-Methode und Subscription create-Methode in meinem UserController's create-Methode mocken.
Eine Methode Customer.create sieht etwa so aus:
result = Braintree::Customer.create(
:first_name => @creditcard.first_name,
:last_name => @creditcard.last_name,
:email => @user.email
:credit_card => {
...
}
}
)
Dies gibt ein Braintree::Successful-Ergebnisobjekt mit den Attributen des verarbeiteten Ergebnisses zurück.
Ich denke, ich muss etwas tun wie:
Braintree::Customer.expects(:create).returns(...)
Aber was kommt in den Retourenbereich? Muss ich mein eigenes erfolgreiches Objekt mit den Attributen eines gefälschten verarbeiteten Ergebnisses erstellen, oder gibt es einen einfacheren Weg, all das zu tun?
Danke für jede Hilfe, die Sie anbieten können.