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


„Wir sind Open-Data ready.“

Autor*in: Christine Pfleger


Projekte   //   Technologie


Beim Thema Datenmanagement in Destinationen zählt der Tourismusverband Mecklenburg-Vorpommern e.V. (TMV) zu den Vorreitern. Ein Gespräch mit Carsten Pescht über die Anforderungen an ein Datenmanagement-System – und was die imx.Platform für die Destination leistet.


Beitrag lesen
06
OKT
20

Google EAT

Autor*in: Hannes Heigenhauser


infomax // Strategie & Konzeption // Technologie


Alles neu mit Google EAT? Oder doch eher nur ein Hypethema? Wir erklären Ihnen, was sich hinter EAT verbirgt und worauf Sie achten müssen


Beitrag lesen
31
AUG
20

Content Management Systeme – Vor- und Nachteile verschiedener Tools

Autor*in: Anton Straßer


infomax   //   Technologie


Welches CMS ist für welchen Anwendungsfall am besten geeignet und wo liegen Vor- und Nachteile der jeweiligen Systeme? Dieser Beitrag soll anhand dreier Systeme eine Annäherung an eine Antwort auf diese Frage liefern. Denn wie so oft heißt es: „Es kommt darauf an.“


Beitrag lesen
04
APR
22