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


PHP Locale Setting für Windows

Autor*in: Stefan Oswald


Technologie


Um deutsche Locales unter PHP auf einem Linux-System zu verwenden, setzt man einfach die gewünschte Locale-Einstellung (z.B. LC_TIME) auf de_DE.utf8, und in der Regel passt das dann. Zur Not kann man sich mit dem Kommandozeilen-Parameter locale -a auch einfach die verfügbaren Locales ausgeben lassen und weiß dann Bescheid. Falls die benötigte Locale nicht installiert ist, …


Beitrag lesen
16
DEZ
11

Recap Velocity Conference Amsterdam 2016

Autor*in: Robert Klauser


Technologie // Über den Tellerrand


Nach drei spannenden Tagen von 7. bis 9. November 2016 in Amsterdam bin ich mit vielen neuen und interessanten Eindrücken von der Konferenz zurückgekehrt, die ich gerne mit Euch teilen möchte. Bei der Velocity Conference ging es um die Themen Web Performance in allen Facetten sowie DevOps als Prozess für den agilen und performanten Betrieb …


Beitrag lesen
11
NOV
16

Bilder SEO – Bisher eigentlich komplett vernachlässigt

Autor*in: Axel Güldner


Technologie // User Experience & Design


Heute möchte ich ein Thema anschneiden, welches bisher wohl so niemand auf dem Schirm hatte (ich zumindest habe bisher keinen Gedanken daran verschwendet). Aber als ich dann in einem anderen Blog darüber gelesen habe, hat mich dann sofort die Faust der Erkenntnis getroffen, ähnlich einer Brockhaus-Enzyklopädie, die einem ins Gesicht fällt. Wir bemühen uns immer …


Beitrag lesen
07
FEB
12

imx.Platform: Release-Notes Januar 2020

Autor*in: Brigitta Zinsser


infomax   //   Technologie


imx.Platform

Nachdem von zahlreichen Kunden der Wunsch an uns herangetragen wurde, dass sie gerne regelmäßig über aktuelle Neuerungen in der imx.Platform informiert werden möchten, starten wir ab diesem Jahr mit monatlichen Informationen zu den Neuerungen in der imx.Platform. Dieses Mal geht es im Neuerungen, die in den letzten Wochen bis einschließlich 28.01.2020 bereitgestellt wurden.


Beitrag lesen
28
JAN
20