Testowanie klas z użyciem mocków
Założenie: Nauczymy się, jak testować klasę `Zamowienie`, która zależy od klasy `Platnosc`, używając mocka dla klasy `Platnosc`.
Krok po kroku:
- Stworzenie klasy `Platnosc` (dla uproszczenia):
- Stworzenie klasy `Zamowienie`:
- Testowanie klasy `Zamowienie` z użyciem mocka:
Ta klasa symuluje przetwarzanie płatności. W rzeczywistości mogłaby zawierać złożoną logikę.
platnosc = $platnosc;
}
public function zlozZamowienie($kwota) {
if ($this->platnosc->przetworzPlatnosc($kwota)) {
return "Zamówienie złożone!";
} else {
return "Błąd podczas przetwarzania płatności.";
}
}
}
?>
Klasa `Zamowienie` korzysta z obiektu `Platnosc` do przetworzenia płatności.
mockPlatnosc = $this->createMock(Platnosc::class);
}
public function testZlozZamowieniePowodzenie() {
$this->mockPlatnosc->method('przetworzPlatnosc')->willReturn(true);
$zamowienie = new Zamowienie($this->mockPlatnosc);
$this->assertEquals("Zamówienie złożone!", $zamowienie->zlozZamowienie(100));
}
public function testZlozZamowienieBlad() {
$this->mockPlatnosc->method('przetworzPlatnosc')->willReturn(false);
$zamowienie = new Zamowienie($this->mockPlatnosc);
$this->assertEquals("Błąd podczas przetwarzania płatności.", $zamowienie->zlozZamowienie(100));
}
}
?>
W tym teście używamy `PHPUnit` do stworzenia mocka klasy `Platnosc`. Metoda `przetworzPlatnosc` jest “zmockowana” – zwraca `true` lub `false` w zależności od testu. Dzięki temu możemy testować klasę `Zamowienie` niezależnie od rzeczywistego działania klasy `Platnosc`.
Ten przykład pokazuje podstawy testowania klas z użyciem mocków w PHP. Zachęcamy do dalszego zgłębiania tematu testów jednostkowych i frameworków testowych takich jak PHPUnit.