2014-06-24 11 views
5

Ich verwende Test::MockModule, um Perl-Modul zu testen. Einer der Anrufe muss den Status $? überprüfen, um Fehlercode und Programmprüfungen dafür zu erhalten.

Wie kann ich verspotten das Ergebnis $?

im Test befindlichen Code wie unten.

my $result = CCUtil::cleartool($cmd); 

if ($? != 0) { 
    confess "Stream $stream not found($result) "; 
} 

Die API gibt String zurück und setzt $? zum Überprüfen des Status.

normale Methodenaufrufe und deren Rückgabewerte geändert werden mit so etwas wie unten

my $module = Test::MockModule->new('CCUtil'); 
$mockModule->mock(cleartool => sub {return 'stream not found'}); 

Der Methodenaufruf wird nun verspottet. Nicht der Wert von - $?

Antwort

4
my $module = Test::MockModule->new('CCUtil'); 
$mockModule->mock(cleartool => sub { $? = 0x0100; return 'stream not found' }); 
Verwandte Themen