[Dresden-pm] Filehandles testen
Maik Hentsche
maik at mm-double.de
Sa Mär 31 23:37:59 PDT 2012
Sebastian Oeste <oeste.sebastian at googlemail.com> wrote:
> sub read_from_file
> {
> my @insert_line = ();
> open(OUT, ">>", $file) or die qq/any errormessage/;
> while (<OUT>)
> {
> push(@insert_line, $_);
> }
> close(OUT);
> return \@insert_line;
> }
Da du deine Funktion read_from_file nennst, würde ich annehmen, dass du
lesen willst. Tatsächlich öffnest du aber zum schreiben. Ich würde dir
auch empfehlen, auf Bareword-Filehandle (OUT) zu verzichten. Damit
handelst du dir Probleme ein, die nicht sein müssen. Bspw. sind
Bareword-Filehandle globale Variablen, du kannst sie also nicht in
rekursiven Funktionen einsetzen. Besser wären lexikalische Filehandle:
open my $fh, "<", $filename or die;
> Habt ihr ne Idee wie ich sowas Testen kann würde mich brennend
> interessieren.
Da gibt es mehrere Möglichkeiten. Du könntest z.B. eine Datei anlegen,
deren Inhalt du genau kennst.
use Test::More;
use MyPackage;
my @expected = ("zeile 1\n", "zeile 2\n");
my $result = MyPackage::read_from_file('t/file_with_known_content');
is_deeply($result, \@expected, 'Read_from_file known content');
Du könntest auch ein bekannt funktionierendes Filelese-Modul verwenden
und schauen, ob es das selbe liefert wie deine Funktion:
use Test::More;
use MyPackage;
use File::Slurp 'read_file';
my $expected = read_file('t/file_with_unknown_content');
my $result = MyPackage::read_from_file('t/file_with_unknown_content');
my $joined = join '', @$result;
is($joined, $expected, 'Read_from_file slurp');
Es kann sein, dass noch andere Testmöglichkeiten sinnvoll sind, je
nachdem, was du testen willst.
so long
Maik
--
Der Verstand ist wie eine Fahrkarte. Sie hat nur Sinn wenn man sie
benutzt. (Ernst R. Hauschka (*1926), deutscher Essayist,
Aphoristiker und Bibliothekar)
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : signature.asc
Dateityp : application/pgp-signature
Dateigröße : 190 bytes
Beschreibung: nicht verfügbar
URL : <http://mail.pm.org/pipermail/dresden-pm/attachments/20120401/6c132f24/attachment.bin>
Mehr Informationen über die Mailingliste Dresden-pm