Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHPUnit] Nadpisanie metody statycznej
kapslokk
post
Post #1





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


Cześć,
próbuje napisać test, dla klasy, która korzysta z innej. Przykład:

  1. class A{
  2. public static function get(){
  3. return 1;
  4. }
  5. }
  6.  
  7. class B{
  8. private $a;
  9. public function __construct($a){
  10. $this->a = $a;
  11. }
  12. public function doSomething(){
  13. return $this->a->get();
  14. }
  15. }

No i jak próbuje zrobić mock metody get i jest tam "static", to po prostu pomija ten test. Jeżeli usunę "static" - wszystko działa ok.

Nie pytajcie po co ten static tam w ogole jest - nie moja wina, grzebe w starym kodzie, nie mogę go usunąć.
Używam PHPUnit 5.4.2


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%)
-----


1. Wiem, że PHP pozwala na pewne głupoty, ale dlaczego wywołujesz metody statyczne jak metody obiektu?
2. Tutaj mamy koronny przykład dlaczego w zdecydowanej większości przypadków użycie statycznych metod jest złe i niepożądane. Metody statyczne są praktycznie niemożliwe do testowania bez "hacków" w postaci np. dynamicznej podmiany byte-code'u.
3. Opisz może dokładniej swój przypadek (albo podaj wręcz faktyczny kod) - być może wcale nie ma potrzeby do tworzenia mocka.
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: 8.10.2025 - 16:11