2016-07-06 10 views
1

Ich habe eine Reihe von Unit-Tests für mein Modul, und ich finde, dass ich den gleichen Mock-und Setup-Code von einem zum anderen kopieren. Wie kann ich das DRY und den gespiegelten Code wiederverwenden? neben meinen TestsWie können Mock-Objekte in Perl-Unit-Tests wiederverwendet werden?

Ich habe diese einfache Mock-Objekt platziert:

package MockObject; 
1; 

Wenn ich im Testfall nur use MockObject; sagen, make test nicht MockObject finden. Macht Sinn; Schließlich ist es nicht systemweit installiert und liegt nicht neben dem zu testenden Modul.

Ich kann meine Tests mit prove -I lib -I t t/*.t ausführen, aber ich möchte make test behalten, wenn nur für die Faulheit der Eingabe ein paar Zeichen weniger.

Da das Mock-Objekt kein vollständiges Modul ist und sowieso nicht offiziell installiert werden soll, kann und will ich TEST_REQUIRES nicht in Makefile.PL setzen.

Das Hinzufügen von test => { FILES => 't/*.t', INC => 't/' } zu Makefile.PL hat nicht geholfen.

Wie kann ich (einfach) Perl-Pseudocode mit dem Make Maker generierten Makefile wiederverwenden?

+1

Entweder PERL5LIB gaben Sie Ihr t Verzeichnis aufzunehmen, oder 'nur in Ihrer Testdatei verwendet lib'. – xxfelixxx

Antwort

1

Richten Sie PERL5LIB ein oder fügen Sie use lib in Ihrem Skript hinzu. Ich fand nützlich, um den lib-Pfad für Tests einzurichten.

use FindBin qw($Bin); 
use lib "$Bin/../lib"; 

Wo:

$Bin - path to bin directory from where script was invoked 
+0

Ich benutze nur 'Use lib 't';', die ich noch in den Testfall kopieren muss, aber das ist viel besser als das Kopieren des gesamten Code-Codes, nicht mit globalen Einstellungen zu tun, und funktioniert. – Robert