4 Stimmen

PHPunit und getopt

Ich versuche, eine Komponente zu testen, die eine von einem Drittanbieter erstellte Bibliothek verwendet, die getopt verwendet, um Befehlszeilenargumente abzurufen.

Gibt es einen Weg, dies innerhalb von PHPunit zum Laufen zu bringen?

Ich habe versucht, dies vor dem Aufruf der Komponente einzufügen:

$args = explode( ' ', 'scriptName -q staging_to_xxx -w 250 -c 500' );
$_SERVER['argv'] = $args;

Aber das funktioniert nicht.

3voto

Darren Cook Punkte 25952

Sie können eine php.ini-Einstellung register_argc_argv=false verwenden, um die globalen Variablen argv und argc festzulegen. Es scheint, dass getopt die globalen Variablen verwendet, was bedeutet, dass dieser Ansatz funktionieren wird.

Wenn Sie dieses Skript 'argv_test.php' genannt haben, führen Sie es zuerst wie gewohnt aus:

$ php  argv_test.php -a777 -b
array (
  'a' => '777',
  'b' => false,
)

Führen Sie es dann aus, indem Sie die ini-Einstellung überschreiben:

$ php -d register_argc_argv=false argv_test.php
array (
  'a' => '999',
  'b' => false,
)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X