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

Smashing Conference 2026 in Amsterdam

Dieses Jahr wurde es wieder einmal Zeit, eine Smashing Conference zu besuchen, diesmal in der…

4 Tagen ago

Wie man ein Selfie mit Kevin Powell bekommt

"Wir sind dann nächste Woche auf der SmashingCon. Sollen wir jemandem was aus Amsterdam mitbringen,…

1 Woche ago

imx.Platform Lab 2026: Zukunft im Blick

Gelebtes Anwenderforum Das imx.Platform Lab ist mehr als ein weiterer Termin in Ihrem Kalender. Es…

1 Woche ago

imx.Platform News: MCP-Endpunkt, Aufgaben-Modul und neue KI-Funktionen

Inhalte aus der imx.Platform werden für KI-Systeme noch besser zugänglich und redaktionelle Arbeit wird effizienter…

1 Woche ago

imx.Platform @The Future of German Media

Summit in Hannover, Zeit für Perspektivwechsel. Neue Perspektiven erweitern den Horizont, ermöglichen persönliches Wachstum und…

2 Monaten ago

#imxkickoff2026: Neues Jahr, neue Challenge.

Der #imxkickoff 2026 führt unser Team für drei inspirierende Tage in winterlicher Kulisse zusammen. Zwischen…

3 Monaten ago