Napisany lip-27-2009

asercja

Pojęcie asercji wiąże się ściśle z etapem testowania napisanego kodu. Zazwyczaj przyjmuje formę wyrażenia logicznego, które zwraca albo prawdę albo fałsz. Stanowi więc doskonałe narzędzie, dzięki któremu możemy w prosty sposób, wychwycić błędy w pisanych aplikacjach. W PHP dostęp do asercji umożliwiają dwie funkcje assert() i assert_options(). Aby dobrze zrozumieć omawiane zagadnienie, spójrzmy na poniższy przykład.

Asercja w praktyce

Na początek zasada działania funkcji assert().

// asercja z wyrażeniem logicznym które jest zawsze prawdziwe
assert ('12>1');

Wykonanie powyższego kodu zakończy się sukcesem, gdyż wyrażenie podane jako parametr funkcji będzie zawsze prawdziwe. Wprowadźmy więc małą zmianę:

// asercja z wyrażeniem logicznym które jest zawsze fałszywe
assert ('12<1');

Tym razem zostanie zgłoszony błąd, zgodnie z ustawieniami zdefiniowanymi przy użyciu assert_options(). U mnie na wyjściu otrzymałem następujący komunikat:

Warning: assert() [function.assert]: Assertion “12<1" failed in assert.php on line 5

Nasuwa się więc prosty wniosek. Gdy warunek podany w asercji nie jest spełniony jesteśmy w stanie dostrzec i wyeliminować potencjalne błędy w kodzie. Popatrzmy na bardziej skomplikowany przykład:

function getnews ($id) {

	//sprawdzamy czy przekazano integer
	assert ('is_int($id)');
	echo $id;

}

getnews('3');

Powyższy skrypt zgłosi błąd, gdyż do funkcji przekazano string a nie integer. Asercja nie została spełniona.

Na koniec pozostało omówienie opcji, które pozwalają skonfigurować asercje w PHP. Do tego celu używa się funkcji assert_options($option,$value), gdzie pierwszym parametrem jest konkretna opcja, a drugim jej nowa wartość. Jeśli $value nie zostanie przekazana, to zwrócona zostanie bieżąca wartość opcji $option. Opcje konfiguracyjne przedstawiają się następująco:

  • ASSERT_ACTIVE - asercja włączona lub nie. (true lub false)
  • ASSERT_WARNING - asercja generuje ostrzeżenie PHP. (true lub false)
  • ASSERT_QUIET_EVAL - generowanie komunikatu w przypadku, gdy w trakcie obliczania wyrażenia logicznego przekazanego w asercji wystąpi błąd. (true lub false)
  • ASSERT_BAILE - niespełniona asercja zatrzymuje wykonywanie skryptu. (true lub false)
  • ASSERT_CALLBACK - nazwa funkcji, która jest wywoływana w przypadku niespełnienia asercji.

To tylko zalążek możliwości jakie oferuje asercja, a zarazem wstęp do pisania testów jednostkowych. Zainteresowanych odsyłam TUTAJ. W przyszłości postaram się do tego tematu powrócić.

Tagi : ,

Napisz komentarz