Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pytanie o testowanie jednostkowe oraz wstrzykiwanie zależności
mrWodoo
post
Post #1





Grupa: Zarejestrowani
Postów: 160
Pomógł: 6
Dołączył: 13.01.2012
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Witam, mam dwa pytania gdyż natrafiłem na te pojęcia
- testowanie jednostkowe
- dependency injection

Jak ja to widzę
- testowanie jednostkowe - to po prostu sprawdzenie czy dany fragmentu kodu (klasy) działa, zwraca co należy i czy POTRZEBNE do tego są rzeczy takie jakie SimpleTest/PHPUnit czy mogę po prostu sprawdzać samemu co zwraca metoda np poprzez uzywania var_dumpa, i jak coś się nie zgadza bo zwróciło coś czego nie powinna to wtedy szukam błędu oraz teraz kwestia tworzenia porządnego kodu, który można testować, kod mam tworzyć tak, że można go testować samodzielnie, bez dokładania mu dziesiątek innych obiektów, może jakaś ciekawa stronka, która opisuje to porządnie (po angielsku może być)

- dependency injection - chodzi w tym o to, że żadna klasa nie tworzy sama w sobie nowych obiektów klas, tylko ma je przekazywane przez parametr lub sięgają po obiekty z 'kontenera' zalezności?

np

  1. $DI = new DI();
  2. $DI->db = new DB( $loginInformation );
  3.  
  4.  
  5. $application = new Application( $DI->db );
  6. lub ewentualnie w konstruktorze klasy Application robię
  7. $this->db = $DI->db; //$DI przekazuję w parametrze lub ew. robię z tego singletona z dostępem do instancji poprzez statyczną metodę getInstance


?


Przepraszam za wszystkie głupoty, które tutaj napisałem, ale na tym polega nauka
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Testy: niby można by przygotować sobie jakieś testy bez wykorzystania narzędzi takich jak PHPUnit, ale na dobrą sprawę będzie to cholernie niewygodne, wydłuży i tak już sporą ilość czasu jaką trzeba poświęcić na testy, a ostatecznie skończy się "wymyślaniem koła od nowa" i przepisywaniem fragmentów tych tego typu narzędzi. Zresztą dochodzi się do absurdalnej sytuacji, gdzie będziesz musiał pewnie pisać testy do zestawu narzędzi do przeprowadzania testów. Odnośnie strony: dokumentacja samego PHPUnita robi za całkiem przyzwoity "wstęp do TDD".

Odnośnie DI: to tylko nazwa dla pewnych konstrukcji w kodzie, ale tak: generalnie chodzi o to by zewnętrzne zależności dla danego obiektu były mu przekazywane jako argumenty konstruktora (te które są bezwzględnie wymagane) bądź poprzez dedykowaną metodę (opcjonalne zależności). Na tym kończy się DI jako takie. Kontener zależności (DIC) to już zupełnie inne zagadnienie i służy on pewnej automatyzacji procesu tworzenia mocno rozbudowanych struktur obiektów.
- bezpośrednie używanie kontenera zależności jest złą praktyką - tworzy ukryte zależności, które mają być przez DI wyeliminowane,
- używanie metod statycznych również jest złą metodą - j/w,
- obiekty mogą wewnątrz swoich metod tworzyć inne obiekty - nie wszystko musi pochodzić z zewnątrz,
- przeczytaj sobie: http://symfony.com/doc/current/book/service_container.html - jest to może fragment dokumentacji Symfony, ale porusza on problem DI/DIC dosyć ogólnie.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 10:32