PHPUNIT 测试 涉及到singleton类的有关问题

WBOY
Lepaskan: 2016-06-12 16:19:59
asal
855 orang telah melayarinya

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.

------解决方案--------------------

探讨

实际上还有几个class D,E,F都是singleton并且里面的$CI 是protected 或者 private 所以无法手动清除
Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!