Pregunta

Me gustaría unidad de prueba de un programa Perl mío que está utilizando acentos abiertos. ¿Hay una manera de burlarse de los acentos abiertos para que pudieran hacer algo diferente de la ejecución del comando externo?

Otra muestra de interrogación lo que necesito , pero en Ruby. Por desgracia, no puedo optar por utilizar Rubí para este proyecto, ni quiero evitar los acentos abiertos.

¿Fue útil?

Solución

Puede * simulacro de la incorporada en el readpipe función. Perl llamará a la función de su maqueta cuando encuentra una expresión acentos abiertos o qx.

BEGIN {
  *CORE::GLOBAL::readpipe = \&mock_readpipe
};

sub mock_readpipe {
  wantarray ? ("foo\n") : "foo\n";
}

print readpipe("ls -R");
print `ls -R`;
print qx(ls -R);


$ perl mock-readpipe.pl
foo
foo
foo

* - si tiene perl versión 5.8.9 o posterior .

Otros consejos

En lugar de utilizar acentos abiertos, puede utilizar capture de IPC :: System: :. simple, y luego escribir una versión simulada de la captura () en su unidad de prueba

# application
use IPC::System::Simple qw(capture);
my $stuff = capture("some command");

# test script
{
     package IPC::System::Simple;
     sub capture
     {
         # do something else; perhaps a call to ok()
     }
}

# ... rest of unit test here
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top