Categories: Technologie

PHP-Funktionen in PHPUnit testen

Gestern bin ich auf eine interessante Erweiterung für PHPUnit gestoßen, die es erlaubt auch reine Funktionen als Mock-Objekte anzulegen und deren Verhalten damit zu testen: PHP-Mock bzw. dessen Erweiterung für die Nutzung in PHPUnit.

Damit kann man dann sehr bequem auch interne Funktionen testen, z.B. file_get_contents() oder auch ein mail().

Ein so gearteter Test könnte dann z.B. so aussehen:

<?php

namespace deimxnetprojecttestunitTests;

use phpmockphpunitPHPMock;

class BuiltinTest extends PHPUnit_Framework_TestCase {

  use PHPMock;

  public function testFileGetContents() {
    $mock = $this->getFunctionMock(__NAMESPACE__, 'file_get_contents');
    $mock->expects(self::once())->willReturn('contents-of-file');

    self::assertEquals('contents-of-file', file_get_contents());
  }

  public function testMail() {
    $mock = $this->getFunctionMock(__NAMESPACE__, 'mail');
    $mock->expects(self::once())->with(self::equalTo('example@example.com'), self::isType('Subject'), self::equalTo('Mail body'));

    self::assertTrue(mail('example@example.com', 'Subject', 'Mail body'));
  }
}
Benjamin Hofmann

Senior Web-Entwickler bei infomax am Standort Bremen

Share
Published by
Benjamin Hofmann

Recent Posts

imx.Platform News: Whitelabel, Barrierefreiheit & neue Funktionen

Wir haben die imx.Platform durch eine Reihe von Produkt-Updates weiter optimiert, um sowohl die Datenqualität…

4 Wochen ago

Unsere Ausbildungszeit bei infomax

Phil Jope und David Kelemen, haben 2022 ihre Ausbildung zum Fachinformatiker für Anwendungsentwicklung begonnen und…

2 Monaten ago

Augmented Reality trifft TYPO3: POIs neu erleben

Wie bringt man POIs auf mobilen Geräten intuitiv und platzsparend zur Anzeige? Diese Frage stand…

3 Monaten ago

☀️🌧️ Sommer-(Regen)fest 2025 – Wenn das Wetter nicht mitspielt, aber das Team umso mehr!

Ende Juni war es endlich soweit: Das gesamte #Teaminfomax kam wieder zusammen - mit Kolleg*innen…

3 Monaten ago

imx.Platform News: Neue Funktionen für mehr Effizienz und Flexibilität

Mit dem aktuellen Release der imx.Platform News erwarten Sie zahlreiche neue Features und Verbesserungen, die…

4 Monaten ago

Eindrücke vom DestinationCamp 2025 in Düsseldorf

Anfang Juni fand wieder das Destination Camp der netzvitamine statt. Dieses Jahr ging es nach…

4 Monaten ago