Skip to content

Test anything with "static" mock injections

Photo of Dimitris Platis
Hosted By
Dimitris P.
Test anything with "static" mock injections

Details

📖 Στο unit testing, για να επιβεβαιώσουμε και να ελέγξουμε τη διάδραση του κώδικά μας με άλλα μέρη του έργου, τα λεγόμενα dependencies, χρησιμοποιούμε mocks.
Τα mocks είναι κλάσεις που μας επιτρέπουν να ορίσουμε το πως αναμένουμε να κληθούν και να συμπεριφερθούν κατά την κλήση τους. Συνήθως μεγάλο μέρος αυτής της λειτουργικότητας προσφέρεται από το testing framework που χρησιμοποιούμε (π.χ. GoogleTest). Το mocking μας βοηθάνε να διαχωρίσουμε τη συμπεριφορά του κώδικα που θέλουμε να τεστάρουμε, από τον υπόλοιπο κώδικα του έργου ή το λειτουργικό σύστημα.

Στη C++ τουλάχιστον ο "κλασικός" τρόπος για να χρησιμοποιήσουμε τα mocks είναι μέσω dependency injection μιας, συχνά, abstract κλάσης (interface).
Αντί δηλαδή να δώσουμε μια "πραγματική" κλάση στον κώδικα που θέλουμε να τεστάρουμε, παρέχουμε τη mock κλάση και έπειτα διατυπώνουμε τις διάφορες "προσδοκίες" μας.

Τί γίνεται όμως όταν δεν είναι επιθυμητό ή δεν είναι δυνατό το dependency injection; Όταν δηλαδή υπάρχει πολύ έντονο coupling μεταξύ του κώδικα που θέλουμε να τεστάρουμε και των dependencies του; 🤔
Μια συχνή θεώρηση είναι πως όταν καλούμε κατευθείαν τον constructor κάποιου πόρου που χρειαζόμαστε, τότε ο κώδικάς μας είναι δύσκολο ως αδύνατο να τεσταριστεί με unit tests. 🤫
Σε αυτό το workshop θα δείξουμε πως μπορούμε να χρησιμοποιήσουμε mocks ακόμα και χωρίς dependency injection, μαζί με τα πλεονεκτήματα και τα μειονεκτήματα αυτής της τακτικής. 🤗

** ΠΡΟΑΠΑΙΤΟΥΜΕΝΑ **

  • Βασική προς μέτρια γνώση C++
  • Εξοικείωση με τις έννοιες του unit testing και του mocking

🕔 Το event ξεκινάει στις 17:00 ώρα Ελλάδος
🎈Στο τέλος θα κληρωθεί 1 ετήσια άδεια χρήσης για τα IDE της Jetbrains!
⚠️ This event will only be offered in Greek ⚠️

Photo of [GRCCP] - Athens C++ Meetup group
[GRCCP] - Athens C++ Meetup
See more events