[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