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


Einschränkung für Video AutoPlay ab Chrome 66

Autor*in: Stefan Oswald


Technologie // User Experience & Design


Seit der Verteilung von Chrome Version 66 tritt das Problem auf, dass Videos plötzlich nicht mehr von alleine starten, obwohl Autoplay vorgesehen und auch richtig konfiguriert ist. Besonders unpraktisch ist das für Bewegtbilder-Keyvisuals. Die Debug-Konsole liefert dabei folgenden Hinweis: Uncaught (in promise) DOMException: play() failed because the user didn’t interact with the document first. https://goo.gl/xX8pDD …


Beitrag lesen
07
MAI
18

Infrastructure as Code: Prolog

Autor*in: Bastian Schwarz


Technologie // Über den Tellerrand


Da unsere Developer VM nun auch schon wieder einige Zeit auf dem Buckel hat habe ich mich die letzten Wochen viel mit dem Thema Virtualisierungsmanagement und Provisioning beschäftigt. Mit was?! Beides klingt hochtrabender als es tatsächlich ist. Letztendlich geht es dabei um 2 Themenbereiche: Das Erstellen von virtuellen Umgebungen Das Einrichten und Konfigurieren dieser Umgebungen Das alles gab …


Beitrag lesen
27
MRZ
17

WJAX 2017: Web-APIs, einfach oder?

Autor*in: Regina Staller


Technologie


Wie im letzten Blog von mir erwähnt wurde, habe ich auf der diesjährigen WJAX einen Vortrag über den effektiven sowie effizienten client- und serverseitigen Umgang mit Web-APIs besucht. Gehalten wurde dieser Vortrag von Thilo Frotscher. Die wesentlichen Themen aus dieser Session möchte ich hier gerne noch einmal vorstellen. Besonders im Bereich IBE/Metasuche bin ich schon …


Beitrag lesen
20
NOV
17

Netbeans und GIT

Autor*in: Florian Müller


Technologie


Ich habe mich mal während der Arbeit mit Git mit den Git Hooks beschäftigt. Ziel war es, unnötige Builds in der Pipeline zu vermeiden, welche aufgrund von Lintern fehlschlagen. Dazu wollte ich einen Pre-Commit Hook einsetzen. Ein simpler Hook, welcher vor einem Commit ausgeführt werden sollte: Wenn man über die Command line commiten will, wird diese auch …


Beitrag lesen
21
APR
17