PHP-Funktionen in PHPUnit testen

Datum: 13. Januar 2017
Autor*in: Benjamin Hofmann


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'));
  }
}

Kommentare

Selber kommentieren:






Weitere Beiträge zum Thema Technologie


OOP 2015 – Tag 2

Autor*in: Marc Kurzmann


Technologie // Über den Tellerrand


Heute mach ich’s ein wenig kürzer: Die erste Session war sehr technisch: „Bring Your Technology“; 5 „Gurus“ haben nacheinander jeweils ihre aktuell spannendste Technologie vorgestellt, mit der sie sich entweder intensiv beschäftigen, oder die sie zukünftig für sehr interessant halten. Folgende Technologien wurden dabei vorgestellt: Arduino (eine Art Mikrocontroller mit Open-Source-Layout, ideal im Zusammenhang mit …


Beitrag lesen
28
JAN
15

OOP 2014

Autor*in:


Projekte // Technologie // Über den Tellerrand


Auf geht’s zu Tag 2 auf der OOP in München. Dieses Jahr steht die Konferenz unter dem Motto: Complexity – Managing Today’s Challenges. Und dieses Leitthema wurde gestern in zwei Keynotes von Tim Mattson (Intel Corp.) und Glenda Eoyang (Human System Dynamics Institute) bereits in seinen vielschichtigen Facetten aufgegriffen. Die Quintessenz: Komplexität (in IT-Projekten) lässt …


Beitrag lesen
05
FEB
14

Erkenntnisse der IPC 2011

Autor*in: Benjamin Hofmann


Projekte // Technologie // User Experience & Design


Bevor ich lange im Developer Meeting etwas erzähle, was dann sowieso nur wieder in Vergessenheit gerät, dachte ich mir meine Erkenntnisse von der IPC 2011 in Mainz einfach hier niederzuschreiben. Dauerhaft für alle von uns sichtbar und mit einer Möglichkeit Fragen zu stellen. Hier also meine Top 7 (unsortiert) der Dinge, die ich interessant fand …


Beitrag lesen
08
DEZ
11

WebKit Sibling Bug

Autor*in: Benjamin Hofmann


Technologie // User Experience & Design


Bei kleineren Anpassungen in einem unserer Projekte ist heute im alten Standard-Browser von Android ein Bug[1] aufgefallen, der dazu führte, dass die Listenelemente mit initial verstecktem Inhalt diesen beim Anklicken nicht anzeigten. Nach einer kurzen Recherche bin ich hier auch auf die Lösung gestoßen, den Checkbox Hack on Mobile Webkit[2]. Klingt fies, ist aber nur …


Beitrag lesen
13
MRZ
15