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

☀️🌧️ 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 Tagen 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…

6 Tagen ago

Eindrücke vom DestinationCamp 2025 in Düsseldorf

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

1 Woche ago

imx.Platform Lab 2025 – inspirierend und interaktiv

In der ersten Aprilhälfte fand erneut unser alljährliches Anwenderforum aka imx.Platform Lab statt. An zwei…

3 Monaten ago

imx.Platform News: Weiterentwicklungen und neue Features

Es stehen neue Funktionen, Erweiterungen und Optimierungen unserer Module und Features in der imx.Platform für…

3 Monaten ago

#imxkickoff2025: Where the magic happens

Unser diesjähriger Jahresauftakt fand unter dem Motto „Where the magic happens“ im malerischen Kloster Seeon…

5 Monaten ago