PHPUnit mocking question. Έχω ένα service που χρησ...
# chat
i
PHPUnit mocking question. Έχω ένα service που χρησιμοποιεί ένα client για να πραγματοποιήσει ένα request. Αυτό το Client είναι ξεχωριστή βιβλιοθήκη, δεν έχει σημασία - είναι ένα feed fetch. Εγώ θέλω να γράψω ένα PHPUnit που να επιστρέφει mocked responses. Στο service μου, είναι εύκολο να κάνω mock τον constructor αλλά κάποια στιγμή πρέπει να κάνω
$client = new Client();
. Πως μπορώ να το αποφύγω και να κάνω mock το Client σε αυτό; Factory ίσως;
κάποιο άλλο practice? Σκέφτηκα και
setClient
αλλά με declare strict types, ή θα αποτύχει ή θα πρέπει να έχω όντως στη μέθοδο να δέχεται και mocked objects.
Σκέφτηκα και να το παιρνάω στον constructor με default value αλλά δεν ξέρω αν είναι best practice.
Επίσης δεν ξέρω αν είναι best practice να το βάλω στον constructor με defafult value μόνο και μόνο για να μπορώ να το κάνω override στα tests.
t
i
global mocking το σκέφτηκα απλά ήθελα να δω αν υπάρχει άλλο practice χωρίς external library.
v
Στον constructor θα το έβαζα εγώ. Αλλά δεν κατάλαβα τι θες να τεσταρεις εφόσον είπες ότι θες να mockαρεις και client και service response. Αλλά anyway.
i
Update: Σήμερα δοκίμασα το https://www.drupal.org/project/http_request_mock που έγραψε ένας από την ομάδα. Με ένα plugin και μερικά json αρχεία έκανα τη δουλειά μου. Στην ουσία με ένα middleware αλλάζει τον client on runtime και σου επιστρέφει ότι θες να επιστρέψει. Τρομερή δουλειά.