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


ML Conference 2018

Autor*in: Tobias Pfannkuche


Technologie // Über den Tellerrand


„Your scientists were so preoccupied with whether or not they could, they didn’t stop to think if they should.“ Ian Malcolm, Jurassic Park „Machine Learning sucks. It really does.“ Dr. Pieter Buteneers, ML Conference 2018 „Don’t wait for perfection.“ Dr. Ulrich Bodenhausen, ML Conference 2018 Ein Bericht zur ML-Konferenz rund um das Thema Künstliche Intelligenz …


Beitrag lesen
27
JUN
18

ReCSS – Reload your CSS

Autor*in: Benjamin Hofmann


Technologie


Jeder kennt das Problem. Man ändert einen kleinen Style, bspw. ob der Text fett ist oder nicht und dann lädt man die Seite neu, um zu schauen wie es aussieht. Und dann wartet man. Lokal manchmal sogar ziemlich lang und das für die kleinste Anpassung. Es gibt jedoch ein kleines Bookmarklet, um die Style-Entwicklung zu …


Beitrag lesen
22
AUG
12

Zepto.js

Autor*in: Benjamin Hofmann


Technologie


Heute nur ein kurzer Link zu einer Alternative zu jQuery mit einem wesentlich kleinerem Footprint (30 statt 85 KB), aber der gleichen API und Funktionalität: Zepto.js Bei einem unserer Kunden ist das bereits im Einsatz und mittels folgender Zusatz-Module und einem kleinen Polyfill auch als Basis für das imx.Autocomplete und imx.Mapwork im Einsatz, welche beide …


Beitrag lesen
30
SEP
16