我正在尝试测试一个使用第三方库的组件,该库使用getopt来获取命令行参数。
有没有办法在PHPunit中使其正常工作?
我已经尝试在组件调用之前插入以下内容:
$args = explode( ' ', 'scriptName -q staging_to_xxx -w 250 -c 500' );
$_SERVER['argv'] = $args;
但是那样做是不可行的。
我正在尝试测试一个使用第三方库的组件,该库使用getopt来获取命令行参数。
有没有办法在PHPunit中使其正常工作?
我已经尝试在组件调用之前插入以下内容:
$args = explode( ' ', 'scriptName -q staging_to_xxx -w 250 -c 500' );
$_SERVER['argv'] = $args;
但是那样做是不可行的。
register_argc_argv=false
来允许你设置argv和argc全局变量。似乎getopt使用全局变量,这意味着这种方法可以奏效。<?php
$GLOBALS['argv']=array(
'argv_test.php',
'-a999',
'-b',
);
$GLOBALS['argc']=count($argv);
var_export(getopt("a:b"));
?>
如果您将脚本命名为“argv_test.php”,那么请先按照正常方式运行:
$ php argv_test.php -a777 -b
array (
'a' => '777',
'b' => false,
)
然后通过覆盖ini设置来运行:
$ php -d register_argc_argv=false argv_test.php
array (
'a' => '999',
'b' => false,
)