Continua CI in 3 minutes.
Taula de continguts:
Prioritzem els principis d’arquitectura orientada a serveis a Invers. Això vol dir que comptem amb components petits i sostenibles amb responsabilitats clarament definides. Es comuniquen entre si (principalment), a través d’APIs de transferència estatal de representació o REST.
Això proporciona flexibilitat i ens ha servit bé, a excepció d’una faceta significativa: les proves. En provar, cal evitar:
- Dependència dels serveis externs que s'executen a la mateixa màquina.
- Proves lentes.
Com que les aplicacions es basen inherentment en serveis externs, és fonamental tenir una estratègia de proves per a aquestes dependències.
Recentment hem començat a utilitzar Bypass i us explicaré com vam arribar allà i, concretament, com ho estem utilitzant.
El passat
Mock metodi i retorna alguns exemples de dades com aquesta:
Va ser (i crec que encara ho és) la "manera d’anar" al món de Ruby / Rails. Malauradament, això fa que José Valim ens expliqui el mal comportament descrit aquí.
Després vam començar a utilitzar ExVCR, que és una gran biblioteca, però té inconvenients similars com a simulacres: es fomenta la mandra i no fomenta la separació de les preocupacions que són fonamentals per a les APIs ben definides. ExVCR permet "gravar" i "reproduir" dades reals. És molt fàcil d’integrar (incloent algunes línies de la prova i tot el que s’encarrega). Però, idealment, heu de pensar en les dependències externes en les proves, no extreureu-les. Encara podria ser una opció viable per als escenaris en què el comportament del punt final s’hauria de provar amb un cost mínim (l’utilitzem per provar trucades als serveis AWS d’Amazon com S3).
Introduïu adaptadors
Els adaptadors funcionen molt bé i promouen la deliberació sobre els contractes de l'API i els límits de comunicació clarament definits. Encara utilitzem aquest enfocament, especialment quan l'adaptador és més complex (com un sòcol JSON-RPC).
Així pot semblar un adaptador:
Però per a punts finals HTTP simples, els adaptadors semblen molta feina i tenen un inconvenient important: deixen les biblioteques que consumeixen fora de l’equació de prova. Si canvia alguna cosa a les biblioteques HTTP o JSON, les proves no el captaran. La quantitat de codi crític de producció que no es comprova amb aquest enfocament és inacceptable.
El present i el futur
Bypass ens permet iniciar un servidor web molt senzill en proves que simulen serveis externs que utilitzem.
Ara, podem provar tota la pila, incloent la biblioteca HTTP, la biblioteca de codificació / descodificació de JSON i els mecanismes d’autenticació. El bypass README està ben escrit, per la qual cosa perdonaré els detalls de la implementació. No obstant això, fem canviar lleugerament la manera d’utilitzar-lo per mantenir les proves de manera concisa i llegible:
En primer lloc, de vegades volem trucar a Facebook quan les proves s’executen com a suite d’integració completa. Ho fem de forma irregular per garantir que l'API de Facebook encara funcioni segons les nostres expectatives. S'està afegint
- Inclouen la integració
a
prova de barreja
no simula l'API, però, en canvi, truca al servei extern (línies 5 i 7).
Estem explícits quan simularem sol·licituds a serveis externs de manera que cada prova que utilitzi Bypass hagi de tenir la
@tag facebook_bypass
(línia 7).
Finalment, el
handle_fb
es diu la funció (línies 30–39) (atès que el
request_path
partits). M'agrada coincidir en el cap de la funció, ja que fa explícit el camí al qual estem reaccionant i ens permet definir diferents funcions per a diferents camins.
Per tant, Bypass funciona només amb proves marcades amb
@tag: bypass
i quan no estem executant la nostra suite d’integració. Una altra cosa que fem mentre es configura el Bypass és permetre que l’etiqueta passi a un identificador de pàgina (línies 8, 20). Així doncs, aquí teniu una prova que utilitza Bypass en tota la seva glòria:
Com podeu veure, el
facebook_bypass
L'etiqueta fa explícit que estem simulant l'API (tret que estiguem en mode integració). Ens permet passar informació a l’API simulada i és molt fàcil reutilitzar la mateixa configuració de bypass per a diferents proves.
Espero que això ajudi a provar API externes. Podeu trobar-me a Twitter (vegeu més avall) si teniu més preguntes.
Tesla: Elon Musk revela quan els cotxes elèctrics arriben al seu punt de derivació
Els cotxes elèctrics acabaran formant la majoria dels cotxes produïts, va afirmar Elon Musk en una entrevista aquesta setmana. El conseller delegat de Tesla, que va parlar als mitjans xinesos durant una visita a Xangai, va afirmar que la indústria arribaria al punt d'inflexió en uns deu anys.
A continuació s’explica com obtenir un somni de nit millor amb un coixí nou
Si heu estat buscant la solució per dormir millor a la nit, potser només tingueu la resposta amb aquest nou coixí. No és només com un coixí, sinó més aviat com un coixí de luxe, de refrigeració, de lluita contra bacteris. Com a desinfectant i amb infusions d’aloe vera, aquesta coixinet de memòria de memòria de bambú súper acollidora no us farà voler ...
Tesla: A continuació s'explica com podria conduir la conducció autònoma a cotxes autodirigits
A punt que el vostre Tesla es lliuri? Si creieu que la promesa d'Elon Musk de cotxes totalment autònoms, aquesta visió podria estar a la vora. La innovació podria alliberar els conductors de camions del treball mundà i, alhora, revolucionar la indústria mitjançant l'automatització.