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


Builder Pattern Eclipse Plugin

Autor*in:


Technologie


J. Bloch schildert in „Effective Java“ die Vorzüge des Builder Patterns, insbesondere bei Konstruktoren mit mehr als 4 Parametern: verbesserte Lesbarkeit, vor allem bei einer Vielzahl an optionalen Parametern konsistente, in sich abgeschlossene Erzeugung von unveränderlichen Objekten (im Vergleich zur Erzeugung mittels JavaBean Settern) Trotzdem ist das Schreiben des Builder-Codes ein wenig zeitaufwändig. Mittels dieses …


Beitrag lesen
05
JUL
12

Sofort und per Klick: Die neue Tourism Tech Alliance (TTA) vereinfacht den Datenaustausch für Destinationen

Autor*in: Christine Pfleger


infomax   //   Strategie & Konzeption   //   Technologie   //   Tourismus   //   Über den Tellerrand


Die Partner der Tourism Technology Alliance (TTA)
Die Partner der Tourism Technology Alliance (TTA)

Touristische Informationen einfach und plattform-übergreifend dort verfügbar machen, wo sie gebraucht werden: Dieses Ziel steht hinter dem Zusammenschluss der führenden Innovatoren im Bereich Travel Technology zur Tourism Tech Alliance (TTA). Ab sofort ist zwischen den Systemen der Partner ein Konnektor verfügbar, der einen einfachen und bedarfsgerechten Standard-Datenaustausch ermöglicht.


Beitrag lesen
21
OKT
22

Umzug eines MediaWiki auf neuen Server? Auweh…

Autor*in:


Projekte // Technologie // Über den Tellerrand


Ein kleiner Hinweis an Entwickler und Projektmanager, sollten MediaWiki-Projekte einen Serverumzug erfahren dürfen: Das Problem Versionen vor 1.19.x kommen mit den neuen Versionen der PCRX-Library (Perl Compatible Regular Expressions) nicht zurecht. So gehabt nun bei einem alten Projekt. Das Problem äußert sich dadurch, dass plötzlich auf den Seiten unter der Überschrift keine Contents mehr auftauchen, in der …


Beitrag lesen
03
DEZ
15