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: Neue Module für die Whitelabel Widgets und Erweiterungen zum KI-Öffnungszeiten-Assistent

Smarter arbeiten, schneller finden, besser pflegen: Das neue Update der imx.Platform Produktfamilie bringt eine ganze…

1 Woche ago

Wer einmal in Brixen war, kommt wieder – DestinationCamp 2026

Brixen, belebt, Beton, besonders, Brennerbasistunnel, beeindruckend, Begegnungen, begeisternd. Oh wie schön war das DestinationCamp 2026…

3 Wochen ago

imx.Conference 2026: Hype oder Impact?

Vier Jahre - so lange ist die letzte imx.Conference als inspirative Fachveranstaltung für Touristiker*innen im…

4 Wochen ago

Smashing Conference 2026 in Amsterdam

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

3 Monaten 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,…

3 Monaten ago

imx.Platform Lab 2026: Zukunft im Blick

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

3 Monaten ago