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


CKEditor Update im imx.CMS

Autor*in: Bastian Schwarz


Technologie


Demnächst kommt ein neues Release mit der neuesten Version des CKEditors. Dabei wurde ein Update von 4.4.6 auf die aktuellste 4.6.2 durchgeführt. Zusätzlich wurde die Konfiguration etwas optimiert und neue Plugins für das Bearbeiten von Tabellen eingeführt. Die Funktionalität an sich hat sich dabei natürlich nicht geändert, aber es wurden wieder einige Bugs gefixt. Außerdem …


Beitrag lesen
28
FEB
17

Die Erde ist keine Scheibe

Autor*in: Marc Kurzmann


Technologie


Die imx.Platform ist nun in der Lage, in der touristischen Geografie neben Punkten auch mit Flächen zu arbeiten. Ein Deep-Dive in den Maschinenraum erläutert die Herausforderungen und Vorgehensweisen bei der Arbeit mit Geo-Objekten.


Beitrag lesen
17
JUN
22

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

Integrationskomponente imxTools Tag 2.2.0 released

Autor*in: Bastian Schwarz


Technologie


Heute wurden von mir, mit Vorarbeit von Bastian die Services zur Abfrage des Schneeforums bereitgestellt. Es wird als Erweiterung dazu bald noch Object-Wrapper geben, die im Portal dann verwendet werden. Diese Wrapperobjekte erfüllen zwei Ziele. Zum einen bieten sie einige Shortcuts (auf z.B. i18N-Objekte) und schon Funktionalitäten um konstante Stringwerte auf portalspezifische Resource-Keys zu mappen …


Beitrag lesen
25
NOV
11