PHPUNIT 測試 涉及到singleton類的有關問題

來源:互聯網
上載者:User
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 所以無法手動清除
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.