Wpis z mikrobloga

Czy pisze ktoś może testy jednostkowe w Laravelu? Tak jak już kiedyś pisałem - próbuję się tego nauczyć i szukam sobie po Internecie jakichś bardziej zaawansowanych przykładów. Może wiecie gdzie takie coś znajdę? Po prostu nie do końca rozumiem jakie elementy aplikacji testować i w jaki sposób. Chcę to wreszcie ogarnąć, bo przypał. Jeżeli macie swoje chociażby jakieś stare testy, byłbym ogromnie wdzięczny za pokazanie ich w prywatnej wiadomości, czy jakoś. Albo jakieś testy, których przykłady znaleźliście kiedyś w Internecie. #laravel #php
  • 17
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@FREEQ: ebook laravel testing decoded. jak jestes niegrzecznym łobuzem to nawet wcale nie musisz kupować, ten pdf sobie krazy po necie.
  • Odpowiedz
@FREEQ: Nieważne jaki framework, zasady testowania są te same.

1. Izolujesz kod domenowy i aplikacji od infrastruktury, UI, frameworków, bibliotek, etc. Testujesz to jednostkowo.
2. Wszystko inne funkcjonalnie
  • Odpowiedz
@FREEQ: Problem z Laracwelem jest taki, że jak kodzisz wg kombinacji Otwella, to jesteś w dupie i musisz wszystko testować funkcjonalnie:

1. Unikaj kodu w kontrolerze – bo funkcjonalnie (wyciągaj usługi, upewnij się, że masz wyseparowaną warstwę aplikacji i domeny => które możesz testować jednostkowo)
2. Nie używaj ich ORMa z ActiveRecord – bo przywiązuje Twój model do frameworka (i znów: warstwę domenową mógłbyś testować jednostkowo; jak wszystko leży w
  • Odpowiedz
  • 0
@MacDada: muszę przeanalizować co napisałeś, bo jestem za głupi. Problem jest też taki, że aplikacja dla której te testy chcę przygotować jest już w etapie 2.0 i... no cieżko byłoby się odciąć od struktury Otwellowej.
  • Odpowiedz
Jakby nie można było tego wszystkiego sprawdzić odpalając po prostu aplikację.

@daro1: no pewnie, ze sie da. tylko zycze powodzenia w recznym testowaniu wiekszej apki przy kazdej p------e ( ͡° ͜ʖ ͡°)

Wszyscy zachłystują się tymi testami jednostkowymi, jakby świat bez nich nie istniał.

przytoczone przez ciebie testy nie sa unit testami
  • Odpowiedz
Jakby nie można było tego wszystkiego sprawdzić odpalając po prostu aplikację.


@daro1: Cała magia polega w automatyzacji.

* Jak będziesz miał 100k linii kodu to nadal będziesz chciał się wszędzie przeklikiwać po każdej zmianie?
* Przeklikałeś się, ale nie uwzględniłeś, że Twoja zmiana wpływa na jakąś inną część systemu – tę którą już nie przeklikałeś – kabum
* Przychodzi junior – skąd wiesz, że jego zmiany nie wybuchły czegoś? On
  • Odpowiedz
@MacDada: O ile wiem #laravel to małe i średnie projekty, do czegoś większego jest Symfony. Robiłem i to całkowicie samodzielnie projekty (serwisy) ~15k oraz ~25k linii kodu w PHP, z tym że w Kohanie, nie w Laravelu, tu biorę pod uwagę tylko katalog application a nie systemowe kody frameworka czy tam gotowe moduły. Robiłem też analizę za pomocą PHPMetrics.

Do Kohany też by się wielu przyczepiło, choćby ze
  • Odpowiedz
@daro1:

1. Niekiedy mały projekt zamienia się w większy i wtedy jest kuku.
2. Nadal na produkcji mamy projekty z Kohaną 2 (jedne z najpopularniejszych serwisów rozrywkowych w Polsce) – na szczęście unowocześnione przez Composera i zaciąganie nowych bajerków (jak komponenty Symfony).
3. Poprawiasz w jednym miejscu, przypadkiem psujesz w drugim – jak projekt ma na siebie zarabiać, to takie rzeczy są niedopuszczalne – po to są testy.
4. Programiści są różni – pisanie testów jednostkowych sprawia, że rozwijają się pod względem dizjanu i piszą mniej wujowego kodu (pisanie testów jednostkowych przy naruszaniu SOLID
  • Odpowiedz
@daro1: Jeden z projektów Kohanowych (bez vendorów):

Files 5375
Lines of code 722256 (265 by class, 40 by method)
Logical lines of code 110224 (40 by class, 6 by method)
  • Odpowiedz
Obecnie najnowsza wersja Kohany to jest 3.3.6, z sesjami jest to robione już trochę inaczej.

$session = Session::instance('native');
Standardowo Kohana dysponuje tylko natywnymi sesjami (domyślnie) oraz cookie i database. Tutaj w tym przypadku co go podałem używany jest odpowiedni driver, w tym przypadku native. Oczywiście to można zmienić w całej aplikacji w bootstrap.php, używając Session::$default i tam przypisując odpowiedni driver a wszędzie używa się tylko

$session = Session::instance();
  • Odpowiedz
wiele firm (i zresztą nie jeden programista) ma gdzieś te automatyczne testy

@daro1: niestety dokladnie tak jest. i np wchodze do jakiegos projektu, oczywiscie testow nie ma (mam wrazenie, ze w startupach pojecie testow w ogole nie istnieje) i kazda p------a, ktora sie zajmuje, wymaga potem przetestowania na n sciezkach. najlepszy motyw jest taki, ze i tak w ostatecznosci musze napisac jakies testy (najczesciej func, bo zazwyczaj kod jest nietestowalny
  • Odpowiedz