【发布时间】:2012-06-29 09:08:33
【问题描述】:
您将如何测试通过self:: 具有附带影响的类的方法?如:
final class Foo{
private static $effect = false;
public static function doit( $arg ){
if( self::effect ) return;
self::check_args( $arg );
self::$effect = true;
}
private function check_args($arg){
#validate and trhow exception if invalid
}
}
我必须向 doit() 发送几个参数来测试它是否正确地验证了值,但是在第一次运行之后它只是绕过它。它基本上是一个设置初始化标志的单例的初始化方法。
我现在还不能乱上课。有什么方法可以让我以与self:: 一起使用的方式复制/实例化对象?
【问题讨论】:
-
这不是有效的语法。
-
你试过 PHPUnit 中的 --static-backup 选项了吗?
-
@SamHennessy 似乎朝着正确的方向发展,但我未能找到更多相关信息。从phpunit.de/manual/3.6/en/textui.html 它将我重定向到phpunit.de/manual/3.6/en/fixtures.html#fixtures.global-state,它根本没有详细说明那个标志。我尝试使用标志运行测试,但它就像以前一样。
-
@Jon 我已将代码更新为正确,我的错。
-
@tereško 我很想了解这个项目的重构部分。
标签: php unit-testing testing phpunit