Postman API Builder - Webinar
Inhoudsopgave:
We prioriteren de principes van Service Oriented Architecture bij omgekeerde. Dat betekent dat we kleine, onderhoudbare componenten hebben met duidelijk omschreven verantwoordelijkheden. Ze communiceren (meestal) met elkaar, via Representational State Transfer of REST, API's.
Dit biedt flexibiliteit en heeft ons goed gediend met uitzondering van één belangrijk facet: testen. Tijdens het testen moet men vermijden:
- Afhankelijkheid van externe services die op dezelfde computer worden uitgevoerd.
- Trage tests.
Omdat toepassingen inherent afhankelijk zijn van externe services, is het van cruciaal belang om een teststrategie te hebben voor die afhankelijkheden.
We zijn onlangs begonnen met het gebruik van Bypass en ik zal uitleggen hoe we daar aankwamen en specifiek hoe we het gebruiken.
Het verleden
Bespottingsmethoden en retourneer enkele voorbeeldgegevens zoals deze:
Dat was (en dat geloof ik nog steeds) de "way to go" in de wereld van Ruby / Rails. Helaas bevordert dit slecht gedrag zoals het best uitgelegd door José Valim.
We zijn toen begonnen met het gebruik van ExVCR, wat een geweldige bibliotheek is, maar heeft soortgelijke nadelen als moppen / stubs: het moedigt luiheid aan en bevordert niet de scheiding van zorgen die cruciaal zijn voor goed gedefinieerde API's. ExVCR maakt het mogelijk om real-live data te "opnemen" en "af te spelen". Het is heel gemakkelijk te integreren (inclusief een paar regels in je test en al het andere wordt behandeld). Maar idealiter moet je nadenken over externe afhankelijkheden in tests, niet abstraheren. Het kan nog steeds een haalbare keuze zijn voor scenario's waarbij het gedrag van het eindpunt moet worden getest met minimale overhead (we gebruiken het voor het testen van oproepen naar Amazon's AWS Services zoals S3).
Voer Adapters in
Adapters werken goed en bevorderen de afweging rond API-contracten en duidelijk gedefinieerde communicatiegrenzen. We gebruiken deze benadering nog steeds, vooral als de adapter complexer is (zoals een JSON-RPC-socket).
Dit is hoe een adapter eruit zou kunnen zien:
Maar voor eenvoudige HTTP-eindpunten lijken Adapters veel werk en hebben ze een groot nadeel: ze laten de bibliotheken die ze consumeren uit de testvergelijking. Als iets in de HTTP- of JSON-bibliotheken verandert, zullen de tests het niet vangen. De hoeveelheid productiekritieke code die niet wordt getest door deze aanpak is onaanvaardbaar.
Het heden en de toekomst
Met bypass kunnen we een zeer eenvoudige webserver starten in tests die externe services simuleren die we gebruiken.
Nu kunnen we de volledige stapel testen, inclusief de HTTP-bibliotheek, JSON-codering / decodeerbibliotheek en authenticatiemechanismen. De README van bypass is goed geschreven, dus ik zal implementatiedetails missen. We veranderen echter enigszins hoe we het gebruiken om tests beknopt en leesbaar te houden:
Ten eerste willen we soms naar Facebook bellen als tests worden uitgevoerd als een volledige integratiesuite. We doen dit onregelmatig om ervoor te zorgen dat de Facebook API nog steeds werkt volgens onze verwachtingen. Het toevoegen
- omvat integratie
naar
mengtest
simuleert de API niet, maar roept in plaats daarvan naar de externe service (regels 5, 7).
We zijn expliciet wanneer we verzoeken aan externe services simuleren, zodat elke test die Bypass gebruikt, de
@tag facebook_bypass
(regel 7).
eindelijk, de
handle_fb
functie (regels 30-39) wordt aangeroepen (gezien het feit dat de
request_path
wedstrijden). Ik vind matching in de functiekop leuk omdat het expliciet maakt op welk pad we reageren en ons in staat stelt om verschillende functies voor verschillende paden te definiëren.
Dus Bypass werkt alleen op tests die zijn getagd met
@tag: bypass
en wanneer we onze integratie suite niet gebruiken. Nog een ding dat we doen tijdens het instellen van Bypass, is dat de tag een pagina-ID kan passeren (regels 8, 20). Dus hier is hoe een test die Bypass gebruikt in al zijn glorie kijkt:
Zoals je kunt zien, de
facebook_bypass
tag maakt het expliciet dat we de API simuleren (tenzij we in de integratiemodus zijn). Hiermee kunnen we informatie doorgeven aan de gesimuleerde API, en het is heel gemakkelijk om dezelfde Bypass-configuratie opnieuw te gebruiken voor verschillende tests.
Ik hoop dat dit u helpt bij het testen van externe API's. Je kunt me op Twitter vinden (zie hieronder) als je nog vragen hebt.
Hier leest u hoe Twitter reageert op de historische geschiedenis van vandaag
Vanochtend nam Senator Christopher Murphy (D-CT) de Senaatsvloer samen met vrienden en collega's, aangezien de Democratische partij hervorming van de wapenwetten eiste na het bloedbad afgelopen weekend in Orlando. Word verspreidde zich snel en verstuurde de termen #filibuster, #Enough en een sneaky parodie Game of Thrones, #HoldTheF ...
Hier leest u hoe u stress en angst kunt bestrijden met uw iPhone
De Aura is ontwikkeld door topmeditatieleraren en -therapeuten en is gepersonaliseerd door baanbrekende AI. Het helpt je om stress en angst te verlichten door elke dag korte, door de wetenschap ondersteunde mindfulness-meditatie-oefeningen te geven. Aura is de enige app die machine learning gebruikt om volledig aan u en aan uw specifieke behoeften te voldoen
Hier leest u hoe u een betere nachtrust krijgt met één nieuw hoofdkussen
Als u op zoek bent naar de oplossing voor een betere nachtrust, hebben we wellicht het antwoord met dit nieuwe kussen. Het is niet alleen als een kussen, maar eerder een koeling, bacteriën vechten, luxe kussen. Deze supergezellige Bamboo Memory Foam Pillow doet je niet als een ontsmettingsmiddel en doordrenkt met aloë vera ...