2017-05-04 4 views
0

Ich habe eine Rails-App, die mit einer externen API (Salesforce) interagiert, die auf externen Daten in einer entfernten Datenbank beruht. Ich habe einen Wrapper geschrieben, der diesen Code umschließt, so dass Benutzer get_by_id(id) aufrufen können, anstatt die entsprechende SQL-Abfrage zu schreiben.Rails-Tests mit verschiedenen Integrationen

Ich möchte diesen Code testen, und ich bin mir nicht sicher, wie ich darüber gehen sollte. Soll ich die Salesforce-Backend-Datenbank für die Tests aufrufen und die richtigen Methoden aufrufen? Oder sollte ich nur die Ergebnisse der Methodenaufrufe verspotten? Ich bin ständig verwirrt von dem, was ich testen sollte ...

Antwort

1

Sie sollten wie eine Suite für Salesforce Interaktion schreiben.

Ein Grundprinzip des Testens ist, dass Ihr Test nicht aufgrund externer Faktoren ausfallen sollte. Ihre App sollte jedoch in der Lage sein, die Fehler von SalesForce zu beheben.

Von Rails 4 Test Prescriptions

Leider mit einem Drittanbieter-Dienst interagieren führt eine viel Komplexität in unseren Tests. Verbindung zu einem Web-Service ist langsam - sogar langsamer als die Datenbankverbindungen, die wir bereits versucht haben, zu vermeiden. Außerdem erfordert die Verbindung mit einem Web-Service eine Internet-Verbindung ... Einige externe Dienste sind öffentlich - wir möchten nicht jedes Mal ein Update auf Twitter veröffentlichen, geschweige denn eine Kreditkartenzahlung an PayPal senden.

Auch hat das Buch einige Richtlinien,

Ein gefälschten Server, der während eines Tests HTTP-Anforderungen abfängt und gibt ein gespeicherte Antwort-Objekt. Wir werden den Videorekorder gem ... * Ein Adapter verwenden, der ein Objekt ist, das zwischen dem Client und dem -Server sitzt, um den Zugriff zwischen ihnen zu vermitteln.

Ein Rauchtest, der vom Client bis zum echten Server läuft ... ein vollständiger End-to-End-Test der gesamten Interaktion. Wir tun das nicht wollen dies oft tun, aus all den oben genannten Gründen, aber es ist nützlich, in der Lage sein, gegen Änderungen in der Server-API zu schützen.

Ein Integrationstest, der vom Client zum falschen Server geht. Dies testet die gesamte Ende-zu-Ende-Funktionalität unserer Anwendung, aber verwendet eine Stubbed-Antwort vom Server.

Ein Client-Unit-Test, der auf dem Client beginnt und im Adapter endet. Die Antworten des Adapters sind stubbed, was bedeutet, dass der Adapter nicht einmal gefälschte Serveraufrufe macht. Dies ermöglicht es uns, unseren Client vollständig getrennt von der Server-API zu testen.

Ein Adapter-Unit-Test, der im Adapter startet und im Fake-Server endet. Diese Tests das letzte Stück der Kette sind und es uns ermöglichen, das Verhalten des Adapters getrennt von einem beliebigen Client oder der tatsächliche Server

Durch die Art und Weise zu validieren, ich glaube, das Buch ist ein Must-Have

Verwandte Themen