PHPUNIT 测试 涉及到singleton类的问题 class A 是 singleton ,有一个 static public $CI; 属性,并且有个 static public function &get_ci() { if ( !self::$CI ) { self::$CI = &get_instance(); }
return self::$CI; } 方法。
class B 里面调用了 class A class A $CI 变成 class B
然后因为phpunit是连续执行多个test case. 所以classA 的$CI 就一直不变。
class C 里面调用了 class A 返回的$CI 也是 class B的实例
因为class B里面有个 $abc属性 ,在调用 class B 的时候是123。 class C里面同样也有个 $abc属性 ,直已经是456, 但 class C 在调用class A的时候 class A 里面的$CI->abc还是123 但我期望他是456。
此情况只在phpunit 的时候才会出现,因为做完一个test case 后并未将所有变量对象清除掉,如果是正常使用流程是不会出现这个问题,因为class C前不会调用class B.