📚
StaticMockは使い終わったら必ず破棄する
そんなことある?
tototoshi/staticmock を使って静的メソッドのテストをしているとき、
不思議なことが起こった。
TestA.php
$mock = \StaticMock::mock('\Stat');
$mock->shouldReceive('retBool')
->andReturn(true);
TestB.php
$res = \Stat::retBool();
$this->assetFalse($res);
ちょっとわかりにくいが、
二つのテストケースファイルがあって、
片方でmockの設置をしたのが、
別のファイルで影響していた。
( ゚Д゚)
この手の問題は参照被りとかだろうなと。
foreachに&を使った時の対応と同じことをすればいいんだろうと思った。
ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪
------------------- ↓ 本題はここから ↓-------------------
設置したモックを必ず削除
以下のようにnullを放り込む(unsetも有効かも)
$mock = \StaticMock::mock('\Stat');
$mock->shouldReceive('retBool')
->andReturn(true);
・・・
$mock = null;
Discussion