PHPunit和getopt
我试图测试一个使用第三方库的组件,该库使用getopt检索命令行参数 有什么办法可以让它在PHPunit内工作吗 我已尝试在组件调用之前插入:PHPunit和getopt,phpunit,Phpunit,我试图测试一个使用第三方库的组件,该库使用getopt检索命令行参数 有什么办法可以让它在PHPunit内工作吗 我已尝试在组件调用之前插入: $args = explode( ' ', 'scriptName -q staging_to_xxx -w 250 -c 500' ); $_SERVER['argv'] = $args; 但是这不起作用。您可以使用php.ini设置,register\u argc\u argv=false来设置argv和argc全局变量。看来getopt使用了全局
$args = explode( ' ', 'scriptName -q staging_to_xxx -w 250 -c 500' );
$_SERVER['argv'] = $args;
但是这不起作用。您可以使用php.ini设置,
register\u argc\u argv=false
来设置argv和argc全局变量。看来getopt使用了全局变量,这意味着这种方法可以工作
<?php
$GLOBALS['argv']=array(
'argv_test.php',
'-a999',
'-b',
);
$GLOBALS['argc']=count($argv);
var_export(getopt("a:b"));
?>
然后通过覆盖ini设置来运行:
$ php -d register_argc_argv=false argv_test.php
array (
'a' => '999',
'b' => false,
)
我是通过谷歌搜索同一主题来这里的,但PHPUnit命令行测试运行程序无法使用。它使用ini_set()设置php.ini设置,但不适用于此目的;显然,在启动解释器之前需要设置。@MaxCrowe哪个版本的php,哪个版本的phpUnit?这是PHP5.3.29和phpUnit 4.6。
$ php -d register_argc_argv=false argv_test.php
array (
'a' => '999',
'b' => false,
)