![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 22.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Chce napisać dla testów rejestracje użytkownika. Ma być to osobny serwis, rejestracja wygląda w następujący sposób:
1. Kontroler przekazuje dane z formularza do serwisu register do metordy registerUser($data) 2. Metoda waliduje te dane, generuje token dla tego użytkownika, hashuje hasło, przesyła maila do użytkownika w celu potwierdzenia rejestracji. Problem w tym, że nie wiem jak napisać speca do tej metody.. Nie wiem jak wyodrębnić poszczególne elementy do testowania.. Bo nie powinno być to przecież $this->registerUser($form->getData())->shouldReturn(true); Będę wdzięczny za wszelkie wskazówki jak do tego podejść. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Napiszę, że nie powinieneś mieć dla tej metody jednego testu tylko wiele. Powinieneś mieć pewność, że są wykorzystywane zależności, które muszą być wywołane. Sprawdź czy metoda rzuca wyjątkami wtedy kiedy trzeba. Sprawdź wartość zwracaną (o ile coś zwracasz). Nie wiem co robi metoda registerUser więc nie mogę napisać precyzyjnie.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 22.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Masz rację tylko mam problem z testem integracyjnym.. że końcowy test przetestuje mi cały proces.. w niej ma być tylko $this->registerUser($dane)->shouldReturn(true)? Wiem że każdy element mam testować osobno ale potem tak integracyjnie jak to przetestować.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 428 Pomógł: 77 Dołączył: 10.07.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
$this->registerUser($form->getData())->shouldReturn(true);
To mi raczej wygląda na test jednostkowy... Mając mockowane $form->getData() musisz dodać expects, returnValue etc Testując metodę swojego obiektu robisz self::assert{typAssertu} etc. poczytaj |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 22.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Skąd mamy wiedzieć jak ma wyglądać test, skoro nawet nie wiemy co Twój kod ma robić? Druga sprawa, ustalmy o jakim teście piszesz.
Jeśli chcesz pomocy to przedstaw publiczny interfejs obiektów które chcesz przetestować razem z zależnościami. Następnie pokaż spójne testy (jedna linijka mi nic nie mówi). |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 22.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Mój serwis ma zapisywać użytkownika do bazy, w między czasie ma sprawdzić czy taki użytkownik już istnieje i ewentualnie go zapisać wysłać maila z potwierdzeniem rejestracji. Chce to przetestować.
Mój kod wygląda tak :
spec do niego :
Problem miałem z sprawdzeniem użytkownika, ale poradziłem sobie teraz mam problem z perystencją. Chce spradzić czy użytkownik się zapiszę do bazy. Spec zwraca mi niby 100 % ale wywala też bład Fatal error: Call to undefined method Prophecy\Prophecy\MethodProphecy::persist() in /var/www/example/spec/Acme/UserBundle/Libs/RegisterTestSpec.php on line 70 i nie wiem czy to do końca dobry test.. Czy powinienem używac setterów encji ? czy jest jakaś inna opcja obejścia tego ? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 16:15 |