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

„Könnte was für mich sein!“ Das war die infomax Coding Challenge.

Wie können wir Schülerinnen und Schüler für die Informatik begeistern – und ihnen spannende berufliche…

1 Woche ago

Lunch & Learn: XR und die virtuelle Welt!

Was ist AR,MR,VR und XR? Und wie ist es selber in der virtuellen Welt zu…

2 Wochen ago

imx.Platform Lab: Einblicke, Austausch und Inspiration

Vergangene Woche fand unser jährliches Netzwerk-Event der imx.Daten-und Serviceplattform statt. So viel sei vorab gesagt…

2 Monaten ago

imx.Platform News: Neue und deutlich erweiterte KI-Services

imx.Platform-Kunden nutzen bereits seit einigen Jahren Services aus dem Bereich der Künstlichen Intelligenz (KI), wenn…

3 Monaten ago

#imxkickoff2024: Was war. Was kommt. Was bleibt.

Wie geht man am besten an einen Blogbeitrag über den Jahresauftakt #imxkickoff2024 des infomax-Teams vergangene…

3 Monaten ago

Tag der Ausbildung am 06. Oktober 2023 in Traunstein

Phil, Stefan und Vroni berichten vom Tag der Ausbildung in Traunstein, der größten Bildungsmesse in…

6 Monaten ago