¿Cómo me burlo operador de acentos abiertos integrado de Perl?
-
01-10-2019 - |
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.
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