Was hilft Dir die Flexibilität in $name, wenn sie im eigentlichen Aufruf nicht passiert?! (Dass Du nicht prüfst, ob 123 zurückkommt, liegt vermutlich daran dass das nicht das Testziel in diesem Test war...).
In Perl ist das alles machbar. Vielleicht bist Du nur deshalb so verwirrt, weil Du Perl nicht ausreichend kennst. Man kann es nämlich auch so machen:
# Prüfe ob die Methode verfügbar ist
if( my $code = $mock->can($name) ) {
$RV = $mock->$code('mock');
}
Und über den $RV (return Value) ganz genau prüfen ob es dem Kriterium entspricht. Den Artikel habe ich entsprechend ergänzt und ja, ein mocking wo die Abhängigkeit außerhalb der Klasse hergestellt wird ist ja nach wie vor auch möglich (klassisch DI) siehe ebenda.
CGI/1.1 definiert eine Schittstelle die %ENV (Serverumgebung) und STDIN/STDOUT nutzt. Wenn Du da was testen willt, musst Du Dummy-Daten auch da bereitstellen wo sie, je nach $ENV{CONTENT_TYPE}
geparst werden sollen und je nach $ENV{CONTENT_LENGTH}
überhaupt zu erwarten sind.
Transparent wie HTTP nunmal ist, kann man Unittests selbstverständlich auch über HTTP schleifen. Das setzt natürlich ein Framework voraus, was Unittests via HTTP untersützt. Mein Framework unterstützt das.
Bis dann 😉