Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][PHPUnit] assertEquals a działanie skryptu
Forum PHP.pl > Forum > Przedszkole
wpaski
Natknąłem się na taką sytuację podczas testu jednej klasy (to jest tylko przykład, pewnego wzorca), jest kod metody w klasie:

  1. public function connect()
  2. {
  3. $this->state = new ConnectionEstablished();
  4. $this->state->open();
  5.  
  6. return sprintf('Opening connection %s:%d', $this->getUri(), $this->getPort());
  7. }


jak widać w 3 linijce jest wywołanie klasy ConnectionEstablished

teraz mam test PHPUnit:

  1. $this->assertEquals('Opening connection mysql://user@pass:123', $dbConnection->connect());


i test jest OK - nie ma błędów, aczkolwiek nie rozumiem dlaczego, ponieważ normalnie gdybym wywołał w PHP kod:

  1. $this->state = new ConnectionEstablished();


to byłby błąd - ponieważ nie ma takiej klasy, dlaczego w tym przypadku test jest ukończony pomyślnie? Rozumiem, że metoda assertEquals sprawdza jedynie co zwraca dana funkcja ignorując to, że coś w niej może być nie tak? W takim wypadku jak się uchronić przed tego typu błędami?

matiit
Pewnie bootstrapujesz autoloader composerowy w phpunit.

I normalnie uzywa klasy
  1. ConnectionEstablished



Ustaw breakpointa, odpal i sie przekonaj.

Albo ustaw
  1. die('dupa');
w konstruktorze tej klasy
  1. ConnectionEstablished
i tez zobaczysz.

Nie rozumiem problemu.

Inna sprawa, ze prawdopodobnie powinienes swoja klasę uwolnić od bycia zależną od klasy
  1. ConnectionEstablished
wpaski
dzięki, jest tak jak napisałeś
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.