Best Practice For API Design in Elixir - Part 1 | Erlang Solutions Webinar
Satura rādītājs:
Mēs prioritāti piešķiram uz pakalpojumu orientētas arhitektūras principiem Apgrieztā. Tas nozīmē, ka mums ir mazi, uzturami komponenti ar skaidri definētiem pienākumiem. Viņi sazinās viens ar otru (galvenokārt), izmantojot reprezentatīvo valsts pārsūtīšanu vai REST, API.
Tas nodrošina elastību un ir labi kalpojis, izņemot vienu būtisku aspektu: testēšana. Veicot testēšanu, jāizvairās no:
- Atkarība no ārējiem pakalpojumiem, kas darbojas tajā pašā iekārtā.
- Lēni testi.
Tā kā lietojumprogrammas pēc būtības ir atkarīgas no ārējiem pakalpojumiem, ir ļoti svarīgi, lai šīm atkarībām tiktu ieviesta testēšanas stratēģija.
Nesen mēs sākām lietot apvedceļu, un es paskaidrošu, kā mēs tur nonācām un īpaši, kā mēs to izmantojam.
Pagātne
Izmetiet metodes un atgrieziet dažus piemērus, piemēram:
Tas bija (un es uzskatu, ka joprojām ir) „ceļš” Ruby / Rails pasaulē. Diemžēl tas veicina sliktu uzvedību, kā to vislabāk paskaidroja José Valim.
Pēc tam mēs sākām izmantot ExVCR, kas ir lieliska bibliotēka, taču tam ir līdzīgi trūkumi kā mock / stubs: tas veicina slinkumu un neveicina tādu problēmu nošķiršanu, kas ir ļoti svarīgas labi definētām API. ExVCR ļauj ierakstīt un atskaņot reāllaika datus. Tas ir ļoti viegli integrēt (ieskaitot dažas rindas savā testā, un viss pārējais tiek aprūpēts). Bet ideālā gadījumā jums ir jādomā par ārējām atkarībām testos, nevis jāizmanto abstrakti. Tas varētu būt dzīvotspējīga izvēle scenārijiem, kad parametru uzvedība ir jāpārbauda ar minimālu pieskaitāmību (mēs to izmantojam, lai pārbaudītu zvanus uz Amazon AWS pakalpojumiem, piemēram, S3).
Ievadiet adapterus
Adapteri darbojas lieliski un veicina apspriedes par API līgumiem un skaidri definētām sakaru robežām. Mēs joprojām izmantojam šo pieeju, īpaši, ja Adapteris ir sarežģītāks (piemēram, JSON-RPC ligzda).
Šādā veidā Adapteris var izskatīties:
Bet vienkāršiem HTTP galapunktiem Adapteri šķiet daudz darba un tiem ir liels trūkums: viņi atstāj bibliotēkas, kuras tās patērē, no testēšanas vienādojuma. Ja kaut kas mainās HTTP vai JSON bibliotēkās, testi netiks uztverti. Nepieņemams ir ražošanas kritiskā koda daudzums, kas nav pārbaudīts ar šo pieeju.
Pašreizējā un nākotne
Apvedceļš ļauj mums sākt ļoti vienkāršu tīmekļa serveri testos, kas imitē mūsu izmantotos ārējos pakalpojumus.
Tagad mēs varam pārbaudīt visu kaudzi, ieskaitot HTTP bibliotēku, JSON kodēšanas / dekodēšanas bibliotēku un autentifikācijas mehānismus. Apvedceļš README ir labi uzrakstīts, tāpēc es ietaupīšu īstenošanas informāciju. Tomēr mēs nedaudz mainām to, kā mēs to izmantojam, lai veiktu testus kodolīgus un lasāmus:
Pirmkārt, mēs dažkārt gribam izsaukt Facebook, kad testi tiek veikti kā pilnīgs integrācijas komplekts. Mēs to darām neregulāri, lai nodrošinātu, ka Facebook API joprojām darbojas atbilstoši mūsu cerībām. Pievienošana
- iekļaut integrāciju
uz
maisījuma pārbaude
neimulē API, bet tā vietā aicina ārējo pakalpojumu (5., 7. rinda).
Mēs esam skaidri norādīti, kad mēs simulējam pieprasījumus uz ārējiem pakalpojumiem, lai katram testam, kas izmanto apvedceļu, būtu jābūt
@tag facebook_bypass
(7. rinda).
Visbeidzot,
handle_fb
(līnija 30–39) tiek aicināta (ņemot vērā, ka
request_path
spēles). Man patīk saskaņot funkciju galvā, jo tas skaidri nosaka, kuru ceļu mēs reaģējam, un ļauj mums definēt dažādas funkcijas dažādiem ceļiem.
Tātad Bypass darbojas tikai ar testiem, kas atzīmēti ar
@tag: apvedceļš
un kad mēs nedarbojam mūsu integrācijas komplektu. Vēl viena lieta, ko mēs darām, izveidojot apvedceļu, ļauj atzīmei nodot lapas ID (8., 20. rinda). Tātad šeit ir pārbaudījums, kas izmanto apvedceļu visā tās krāšņumā:
Kā redzat,
facebook_bypass
tag skaidri norāda, ka mēs simulējam API (ja vien mēs neesam integrācijas režīmā). Tas ļauj mums nodot informāciju simulētajai API, un tas ir ļoti viegli atkārtoti izmantot to pašu apvedceļa konfigurāciju dažādiem testiem.
Es ceru, ka tas palīdzēs pārbaudīt ārējās API. Jūs varat atrast mani čivināt (skat. Tālāk), ja jums ir kādi jautājumi.
Vīriešu dzimšanas kontrole: NIH testi Kontracepcijas želeja, kas ir iemasēta ādā

Dzemdību kontroles želeju, kas iemasēta cilvēka plecos un pirms dzimuma, izstrādā zinātnieki ar ASV Nacionālajiem veselības institūtiem. Tas izklausās daudz mazāk apgrūtinoši nekā prezervatīvs, bet ir zināms risks aptuveni 420 veseliem heteroseksuāliem pāriem.
Septiņi gadi: Volkswagen atklāj, ka tie ir cheated emisijas testi 3.0 dzinējiem, pārāk

Vašingtonas amatpersonas šonedēļ atzina Vides aizsardzības aģentūru, ka trīs litru dzinēji viņu automašīnās bija cheated emisiju testi, kas sākās 2009. gadā, nevis 2014. gadā, kad uzņēmuma amatpersonas sākotnēji teica. Kā ziņo ASV šodien: "ASV regulatori sacīja, ka kompānijas amatpersonas ceturtdien atzina, ka ...
Kāpēc personības testi nekad nepalīdzēs nopirkt robotu

Mašīnbūves inženieri, kas būvē mūsdienu robotus no titāna sinew, strādā paralēli - ja ne tandēmā - ar mākslīgā intelekta pētniekiem, kas veido nākotnes loģiskos dzinējus un saskarnes, lai iet kopā ar tiem. Viens no populārākajiem interfeisa žanriem, lai studētu, un tas, kas varētu ietekmēt ...