denne uge dykkede jeg ind i automatiseret test med vinkelmåler.Da opbygning af en filial mislykkes meget for nylig med timeouts og andre spørgsmål, jeg vil prøve at finde ud af mere og løse dette.

hvad er automatiseret test.

automatiseret test gør livet lettere, når det er konfigureret korrekt og nyttigt :)automatiseret test bruger program/værktøj til at teste kode hurtigt. Du opretter testcases, og de udføres gennem værktøjet. Ingen menneskelig interaktion til test er påkrævet, efter at du skrev disse sager. Det kan sammenligne, udføre en indtaste data gennem testene.

de mest almindelige tests og deres forskelle.

de to mest almindelige testmetoder, jeg løb ind i hidtil, erunit testing og E2E testing.

enhedstest

enhedstest er fokuseret på test af enkelte enheder.Tænk på dette som en funktion eller en lille del af koden.Du håner (falske) tjenester, netværk og andre ressourcer og udfører alle de isolerede test.
I Angular Karma og Jasmine rammer bruges mest tilskriv enhedstest.

E2E testing

med e2e testing kan du gå gennem GUI ligesom en bruger gør.Klik på knapper, sider,menuens, CRUD. (ikke i produktion)
mest almindelige anvendelse til E2E-test med Vinkel er Selenbanedriver med vinkelmåler.
så for at teste din kode er det nyttigt at bruge unit tests.Hvis du vil teste funktionel brug af din hjemmeside, skal du prøve E2E.

Hvorfor teste?

formålet er at støde på problemer hurtigt.Til E2E-test: du vil heller ikke teste ved at klikke på skærme for at se IFA-knappen fungerer stadig, eller en side indlæses af dig selv.Det ville være meget arbejde og er ikke konsekvent, hvis det ville blive gjort af forskellige udviklere.

opsætning af vinkelmåler.

Sådan installeres protractor.

for at installere protractor kører du følgende fra kommandolinjen:
du installerer protractor ved at køre:

npm install -g protractor

derefter installerer du protractor manager for selen.

webdriver-manager update

webdriver-manager start

Byg en test.

først skal du bruge to filer til at oprette en test, en spec-fil og config-fil.
i konfigurationsfilen konfigurerer du placeringen af spec-filerne. Den indeholder også den bro.ser, du vil bruge til at teste, standard er Chrome.Selen serveradressen er inkluderet for at kommunikere.Og også rammen er sat, dette er Jasmine.Så ser det sådan ud:

 // conf.jsexports.config = { framework: 'jasmine', seleniumAddress: 'http://localhost:4444/wd/hub', specs: }

for at opbygge en test skal du bestemme en sag. Du bygger sagen i spec-filen. Først skal du bestemme, hvad testen skal do.In i dette tilfælde kontrollerer du, om din destinationsside viser velkomstmeddelelsen.

 describe('Landing page', () => {let page: YourAppbeforeEach(() => { page = new YourApp() page.navigateTo('/login') }) it('should display welcome message', () => { expect(page.containsElement('#welcome')).toBeTruthy() expect(page.getElementText('#welcome')).toEqual('Welcome') })})

først beskriver du den side eller det element, du vil teste, i dette eksempel er det destinationssiden. Beskriv er navnet på testsuite og Jasmine syntaks.Den indeholder strømmen fra ende til ende. Inden for dette er ‘ it ‘ testcases.
så bestemmer du hvad ‘det’ skal gøre. ‘Det’ er en global funktion fra Jasmine. Du kan have flere’ it ‘ testcases i strømmen.(beskriv)
i dette tilfælde kontrollerer du, om destinationssiden havde fået velkomstmeddelelsen vist og derfor er tilgængelig som forventet. ( sand, toBeThruthy) du kontrollerer også, om teksten er den samme som teksten på destinationssiden (til lige (‘din tekst’)

Async venter.

JavaScript er asynkron, du ved ikke, hvilket script der skal udføres først. Protractor strømme er synkrone, dine trin er i en bestemt rækkefølge af udførelse. Klik på denne, derefter den knap.
Protractor strømme er skrevet med et løfte. Vinkelmåler kan håndtere løftet med en ventetid, indtil den er færdig.

syntaksen for async venter er meget ligesom TypeScript syntaks.
den asynkrone funktion kan indpakkes med ‘async’ og ‘afvente’.
venter bruges før den linje, som vi vil vente på.

 describe('Landing page', () => {let page: YourAppbeforeEach(() => { page = new YourApp() page.navigateTo('/login') }) it('should display welcome message',async () => { expect(await page.containsElement('#welcome')).toBeTruthy() expect(await page.getElementText('#welcome')).toEqual('Welcome') })})

hvad var hovedproblemet med mine builds?

mine tests mislykkedes meget med timeouts. Jeg brugte async afventer og havde stadig nogle problemer. Som du kan se, er syntaksen næsten den samme med TypeScript async/afventer.

Jeg fandt dette på protractortest.org sted.du kan ikke bruge en blanding af async/afvente og kontrolstrømmen: async / afvente får kontrolstrømmen til at blive upålidelig (se GitHub-problem). Så hvis du async/venter hvor som helst i en spec, skal du bruge SELENIUM_PROMISE_MANAGER: false

Jeg tilføjede dette til config og debugged de resterende fejl.
Jeg bygger i nogle vent / søvn tid mellem nogle tests, og det kører fint.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.