Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Mitkä ovat erot @generatemocksin ja @generatenicemocksin välillä


Mitkä ovat erot @generatemocksin ja @generatenicemocksin välillä


`@Generatemocks`- ja`@generatecemocks` -merkinnöitä Mockiton käytetään pilkkaluokkien luomiseen yksikkötestausta varten DART- ja Flutter -sovelluksissa. Vaikka molemmat merkinnät palvelevat samaa ensisijaista tarkoitusta, ne eroavat merkittävästi käyttäytymistään käsitellessään esittelemättömiä menetelmäpuheluita.

@generatemocks

- Käyttäytymättömien menetelmien käyttäytyminen: Kun menetelmää kutsutaan "@@generatemocks` -tuotetulle mallisobjektille eikä kyseiselle menetelmälle ole määritelty tyttiä, Mockito heittää poikkeuksen. Tämä käyttäytyminen varmistaa, että määrittelet nimenomaisesti tynkät kaikille menetelmille, joita odotetaan kutsuvan testin aikana, mikä auttaa saamaan mahdolliset valvontaa testiasetuksissa.

- Käyttö: Tätä merkintää käytetään tyypillisesti, kun haluat tiukan hallinnan pilkkaesi käyttäytymisestä varmistaen, että kaikki odottamattomat menetelmäpuhelut merkitään välittömästi virheiksi.

- Poistotila: `@generatemocks` pidetään vähemmän suositeltavana verrattuna`@generatenicemocks` -tuotteeseen sen tiukan käytöksen vuoksi, mikä voi johtaa enemmän verbose -tesikoodiin, jos sitä ei hallita huolellisesti.

@generatenicemocks

- Käyttäytymättömien menetelmien käyttäytyminen: Sitä vastoin `@generaticemocks` -sovelluksella luodut pilkkaukset palauttavat menetelmän palautustyypin laki-, laillisen arvon, kun esitettyä menetelmää kutsutaan. Tätä oletusarvoa ei ole tarkoitettu käytettäväksi testilogiikassa, vaan se estää ajonaikaisten virheiden estämistä nolla- tai puuttuvien arvojen takia.

- Käyttö: Tätä merkintää suositellaan useimmille käyttötapauksille, koska se yksinkertaistaa testin kirjoittamista vähentämällä tarvetta tyhjentää kaikki mahdolliset menetelmäpuhelut. Se tekee testeistä vankempia välttämällä epäonnistumisia unohdettujen tynikojen takia.

- Lisäominaisuudet: `@GenerateNicemocks` sallii vain" MockSpec "-luettelossaan, mikä tarjoaa enemmän joustavuutta luotujen pilkkatuntien mukauttamisessa. Voit esimerkiksi määrittää pilkkaluokan mukautetun nimen käyttämällä "AS" -parametria "MockSpec" -kohdassa.

keskeiset erot

1. Vaihtamattomien menetelmien käsittely: Merkittävin ero on se, kuinka kukin merkintä käsittelee menetelmäkutsuja ilman nimenomaisia ​​tynkäjä. `@Generatemocks` heittää poikkeuksen, kun taas`@GenerateNicemocks` palauttaa oletusarvo.

2. Koodin yksinkertaisuus ja kestävyys: `@Generatenicemocks` johtaa yleensä yksinkertaisempaan ja vankempaan koodiin vähentämällä tyhjentävän upottamisen tarvetta.

3. Mukauttaminen: `@GenerateNicemocks` tarjoaa lisää räätälöintivaihtoehtoja" MockSpec "-sovelluksen kautta, mikä mahdollistaa mukautetut pilkkoluokan nimet ja muut edistykselliset kokoonpanot.

Yhteenvetona voidaan todeta, että `@Generatenicemocks` on yleensä suositeltavaa sen kyvystä yksinkertaistaa koodikoodia ja vähentää virheitä, jotka johtuvat esittelemättömistä menetelmistä, kun taas`@generatemocks` tarjoaa tiukemman lähestymistavan, joka voi olla hyödyllinen tietyissä skenaarioissa, joissa vaaditaan selkeä hallinta pilkkakäyttäytymisestä [1] [4] [11].

Viittaukset:
[1] https://www.amaysim.technology/blog/flutter-test-mockito-generatemocks-vs-generatenicemocks
[2] https://www.reddit.com/r/golang/comments/ua0hps/generated_vs_handwress_mocks/
[3] https://blog.logrocket.com/unit-testing-flutter-code-mockito/
[4] https://pub.dev/documentation/mockito/latest/annotations/generatenicemocks-class.html
[5] https://plugins.jetbrains.com/plugin/23513-generate-flutter-mocks
.
[7] https://github.com/dart-lang/mockito/blob/master/null_safety_readme.md
[8] https://github.com/dart-lang/mockito/issues/367
[9] https://github.com/dart-lang/mockito/issues/422
.
[11] https://pub.dev/packages/mockito