Lua Academy · Oppitunti

Assertit

Ilmaiskaa odotettu toiminta.

Oppitunti 3/413 vaihetta

Assertit on ilmainen Lua Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Lua Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Lua Academy-kurssilla on yhteensä 4 oppituntia.

Mitä assertiot tekevät

Assertio on testin ydin. Se ilmaisee tosiasian, jonka on oltava tosi. Jos se on tosi, testi jatkuu. Muussa tapauksessa busted kirjaa epäonnistumisen hyödyllisen viestin kera.

busted käyttää luassert-kirjastoa, jota käytetään globaalin assert-taulun kautta.

assert.are.equal(4, 2 + 2)

are.equal

assert.are.equal tarkistaa yhtäsuuruuden ==-operaattorin avulla. Ensimmäinen argumentti on odotettu arvo ja toinen toteutunut arvo.

Tämä toimii lukujen, merkkijonojen ja totuusarvojen kanssa, mutta tauluille se vertaa identiteettiä sisällön sijaan.

assert.are.equal("hello", greet())
assert.are.equal(10, count)

are.same taulukoille

Kun taulukoiden sisältöä verrataan perusteellisesti, käyttäkää assert.are.same-assertia. Se tarkistaa rekursiivisesti, että kahdessa taulukossa on samat arvot.

Käyttäkää same-assertia tietorakenteille ja equal-assertia primitiiviarvoille tai identiteetin tarkistuksiin.

assert.are.same({1, 2, 3}, split("1,2,3"))
assert.are.same({x = 1}, point)

Totuusarvoisuus

assert.is_true ja assert.is_false tarkistavat täsmälleen oikeat boolean-arvot. assert.is_truthy hyväksyy kaiken, mikä ei ole nil eikä false.

Valitkaa tiukka muoto, kun odotatte nimenomaan boolean-tulosta.

assert.is_true(user.active)
assert.is_truthy(find("x"))
assert.is_false(list:isEmpty())

Nil-tarkistukset

assert.is_nil varmistaa, että arvo on nil, ja assert.is_not_nil varmistaa, että arvo on olemassa. Näitä käytetään usein hakujen tuloksia tarkistettaessa.

Ne ilmaisevat tarkoituksen selkeämmin kuin nil-arvon vertaaminen equalilla.

assert.is_nil(map["missing"])
assert.is_not_nil(map["found"])

Kieltäminen is_not-muodolla

Useimmat assertit voidaan kieltää lisäämällä is_not tai käyttämällä are_not-muotoa. Näin ilmaistaan, että arvojen on poikettava toisistaan.

Esimerkiksi assert.are_not.equal läpäisee testin, kun kaksi arvoa ovat erilaiset.

assert.are_not.equal(1, 2)
assert.is_not_nil(result)

Virheiden testaaminen

Kun haluatte varmistaa, että koodi aiheuttaa virheen, käärikää se funktioon ja välittäkää funktio assert.has_error-assertille. busted kutsuu funktiota ja varmistaa, että se heitti virheen.

Voitte tarkistaa myös virheilmoituksen välittämällä odotetun merkkijonon toisena argumenttina.

assert.has_error(function()
  withdraw(-5)
end, "amount must be positive")

has_no.errors

Vastakkainen tarkistus on assert.has_no.errors. Se läpäisee testin, kun kääritty funktio suoritetaan ilman virheen aiheuttamista.

Tämä on hyödyllistä varmistettaessa, ettei onnistuvan suorituspolun kutsu kaadu, vaikka sen paluuarvoa ei tarkistettaisi.

assert.has_no.errors(function()
  parse("valid input")
end)

Mukautetut virheilmoitukset

Voitte liittää useimpiin assert-tarkistuksiin viestin virheiden selventämiseksi. Välittäkää se ylimääräisenä argumenttina, jotta raportti selittää odotuksen.

Selkeät viestit muuttavat vaikeaselkoisen virheen ilmoitukseksi, josta näkee, miten toimia.

assert.is_true(ok, "login should succeed")

Täsmäytys muokkaimilla

luassert tarjoaa muokkaimia ja matchereita monipuolisempiin tarkistuksiin. Esimerkiksi assert.matches testaa merkkijonoa Lua-kuviota vasten.

Tämä on kätevää, kun täsmällinen yhtäsuuruustarkistus on muuttuvan tulosteen vuoksi liian tiukka.

assert.matches("%d%d%d%d", get_year())
assert.matches("error", log_line, 1, true)

Oikean assertin valinta

Valitkaa selkeyden vuoksi mahdollisimman täsmällinen assert. Käyttäkää same-assertia taulukoille, equal-assertia primitiiviarvoille, has_error-assertia virheille ja truthiness-tarkistuksia boolean-arvoille.

Täsmälliset assertit tuottavat parempia virheilmoituksia, mikä nopeuttaa virheenkorjausta.

describe("queue", function()
  it("dequeues in order", function()
    assert.are.same({"a", "b"}, q:drain())
  end)
end)

Pikatarkistus

Testatkaa, miten hyvin ymmärrätte bustedin assertit.

Kertaus

luassert toteuttaa bustedin assert-taulukon. Käyttäkää are.equal-assertia primitiiviarvoille, are.same-assertia taulukoiden syvälliseen vertailuun sekä truthiness- tai nil-tarkistuksia tilanteen mukaan.

Testatkaa virheet has_error-assertilla ja onnistumiset has_no.errors-assertilla. Kieltäkää tarkistus is_not-muodolla ja lisätkää viestejä selkeämpien raporttien saamiseksi.

Aloita maksutta

Opi Lua tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
40
Oppitunnit
159

Usein kysytyt kysymykset

Onko oppitunti ”Assertit” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Lua Academy-oppimispolun 3 oppituntia, myös oppitunnin “Assertit”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Lua Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Assertit”?

Ilmaiskaa odotettu toiminta. Harjoittelet Lua Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Lua Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Lua Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Assertit”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Lua Academy-oppitunnilla?

Kyllä. Jokainen Lua Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Miksi testata
  2. describe- ja it-lohkot
  3. Assertit
  4. Mockit ja spyt
← Takaisin: Lua Academy