Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Testowanie aplikacji wycinającej teaser z artykułu.
Forum PHP.pl > Forum > PHP > Object-oriented programming
trzczy
Jest aplikacja, która przerabia artykuł bloga na teaser, czyli taki skrót, zajawkę. Zwraca zadaną ilość znaków licząc od początku. W przypadku, gdy ucięcie pada pomiędzy tagami <code></code>, które mogą się znaleźć w artykule, domyka wszystkie rozpoczęte tagi a niezamknięte tagi pomiędzy tagami <code> i dodaje na koniec domknięcie dla <code>.

Czyli aplikacja tak schludnie ucina zawartą w artykule bloga prezentację kodu. Nie tworzą się krzaczki tylko ładny zhajlajtowany tekst ucięty gdzieś tam wewnątrz kodu.

Czy taką aplikację powinno się przetestować czymś takim jak phpunit? Jeśli tak, to co by taki test robił? Bo test mógłby sprawdzać wynik dla kolejnych długości tego teasera, od 1 do 1000 np. Tylko jaką funkcją potem sprawdzić, że nie ma niedomkniętych tagów?

Może w ogóle jakoś inaczej to testować, a może taka aplikacja nie podlega testowaniu?
Z góry dziękuję
Crozin
Jak najbardziej powinno zostać to mocno przetestowane na możliwie dużej liczbie przypadków testowych. Jak mógłby wyglądać test?
  1. $obj = new MyClass(50); // usługa skracająca tekst do 50 znaków
  2. $content = '<p>Blah blah blah blah blah</p><code>some code some code some code some code some code some code some code some code some code</code>';
  3.  
  4. $result = $obj->createTeaser($content);
  5.  
  6. $this->assertEqual('<p>Blah blah blah blah blah</p><code>some code some code some...</code>', $result);
Oczywiście to tylko jedne z przypadków testowych, których tutaj zapewne będziesz potrzebować dziesiątki.
trzczy
Rozumiem, ale jeszcze muszę o coś spytać. Za pośrednictwem funkcji assertEqual będzie sprawdzana identyczność stringa spodziewanego i stringa wynikowego aplikacji.

Ten string spodziewany to muszę "na piechotę" określić? Przy kilkudziesięciu testach muszę określić "na piechotę" kilkadziesiąt spodziewanych stringów?
Crozin
W skrócie: tak - test musi skądś wiedzieć jaka wartość jest uznawana za odpowiednią/wzorcową.
trzczy
Ok, dzięki za pomoc. Gdyby ktoś jeszcze miał jakiś pomysł, to śmiało.
LowiczakPL
niedomknięte tagi naprawia tidy http://php.net/manual/en/tidy.repairstring.php
trzczy
Cytat(LowiczakPL @ 20.06.2016, 22:45:28 ) *
niedomknięte tagi naprawia tidy

Zastosowałem mechanizm regenerujący DOMDocument zamiast tidy. Jest większa kontrola nad wynikowym stringiem. W tidy napotkałem na schody i pewnie musiałbym sporo rozkminiać w konfiguracji tidy, żeby ogarnąć.

W każdym razie
1. tidy dodaje przełamanie linii na końcu zwracanego kodu.
2. Dodanie zamykającego tagu ok, ale jeszcze przed tym domykającym tagiem trza dodać '...'. Przy zagnieżdzonym domykaniu tagów dodanie 3 kropeczek musi być też zagnieżdżone.

Aczkolwiek nie kwestionuję, że tidy może też tu starczyć.
Lion
Przydatne mogą się okazać także asercje assertContains, assertRegExp, assertStringMatchesFormat oraz utworzenie plików z fixturami, datasetów itp.
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.