Mam kawałek kodu w którym powinno coś się zadziać jak będzie kolejny rok. Jak testujecie-symulujecie zmianę roku żeby zobaczyć czy to zadziała?
$sql = "SELECT * FROM faktura ORDER BY id_faktura DESC LIMIT 1"; $result2 = $con->query($sql); if ($result2->num_rows > 0) { while($row2 = $result2->fetch_assoc()) { $year = date("Y"); $nr = $row2["nr_faktura"]; //sprawdza czy nr faktury zawiera biezący rok if (strpos($nr, $year) > 0) { $n = explode("/",$nr); if ($n[1]=$year) { $nrNew = $n[0]+1; $nowyNumer = $nrNew."/".$year; echo $nowyNumer; } //jeśli nie zawiera to jest kolejny rok }elseif (strpos($nr, $year) == 0) { $nrNew = "1"; $nowyNumer = $nrNew."/".$year; echo $nowyNumer; } } }
1 Odpowiedź
To pytanie zakrawa o temat testowania oprogramowania w ogóle.
Generalnie wszystko zależy od tego, jak chcesz to robić, ile chcesz poświęcić na to czasu i jaki masz budżet. Zależy też, czy Twoja aplikacja jest bardzo krytyczna i każdy błąd może oznaczać poważne konsekwencje (np. aplikacje do księgowości online, bankowość internetowa itp.) czy też możesz sobie pozwolić na odrobinę luzu.
Jeśli chodzi o symulowanie zmiany daty, to w Twoim przypadku możesz po prostu zamiast date(‘Y’) wpisać kolejny rok. To będzie najprostsze i najszybsze rozwiązanie. Jeśli skrypt zadziała poprawnie po kilku testach, wrócisz do date(‘Y’).
Jeśli nie chcesz zmieniać kodu, możesz ustawić w systemie operacyjnym żądaną datę. Wtedy PHP weźmie aktualną datę z systemu. Dopóki uruchamiasz kod lokalnie, to też może być rozwiązaniem prostym, choć pewnie wpływającym na Twoje pozostałe aktywności na komputerze.
Idealnie byłoby wyciągnąć ten kawałek kodu i uniezależnić go od daty (sprawiając, że będzie ona podawana jako argument do metody). Wtedy, w kodzie produkcyjnym będziesz przekazywał aktualną datę, a w testach jednostkowych możesz przygotować całą masę danych testowych, które sprawdzą różne przypadki.

Dzięki Marcin,
dla mnie rzeczywiście nie ma aż takiego znaczenia numeracja tych faktur bo nawet duży błąd nie położy biznesu na łopatki (zawsze można z ręki w phpMyAdmin w styczniu nadać ręcznie numer pierwszej wystawionej fakturze na 1/rok_bierzacy a dalej idzie już ok). Najwazniejsze że wszystko mi już działa 😁 miłego weekendu
PS. Jeszcze się nie zabrałem za zgłębianie Twojego nowego projektu Laravel ale na pewno na dniach się za to wezmę bo to jak raz temat pasujący do tego co robię aktualnie.