Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PHPUnit Mock
Turson
post
Post #1





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Mam klasę
  1. class Foo{
  2.  
  3. public function a(){
  4. return $this->b() || $this->c();
  5. }
  6.  
  7. protected function b(){
  8. return time()%2 === 0;
  9. }
  10.  
  11. protected function c(){
  12. return time()%3 === 0;
  13. }
  14.  
  15. }

czy możliwe jest przetestowanie a() poprzez zamockowanie b() oraz c()?
Typu:
mockuję b() że zwraca true i wtedy spodziewam się w a() assertTrue()
mockuję c() że zwraca true i wtedy spodziewam się w a() assertTrue()
mockuję b() oraz c() że zwracają false i spodziewam się w a() assertFalse()
mockuję b() oraz c() że zwracają true i spodziewam się w a() assertTrue()
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
lukaskolista
post
Post #2





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

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


Nie należy mockować testowanej jednostki. W testach jednostkowych mockujesz wszystko poza testowaną jednostką.

Takie podejście uniemożliwia jakąkolwiek refaktoryzacje bez ruszania testów, a wnętrze klasy powinny być pod tym względem elastyczne (czyt. zmiany w implementacji nie powinny powodować wysypywania się testów).
Dodatkowo w takim przypadku Twoje testy są bez sensu, lepiej w ogóle ich nie pisać.

Zobacz tutaj: https://www.schmengler-se.de/en/2011/03/php...-in-unit-tests/

Ten post edytował lukaskolista 21.12.2016, 14:42:15
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: 9.10.2025 - 16:35