クラスをあまり使っておらず、関数を中心に構築されているレガシーなPHPコードをテストするにはどうするか。 テストしたい対象がユーザ定義関数であれば、実際の関数定義を含んだファイルとは別にテスト用の挙動をするモック関数の定義を含んだファイルを用意しておき、ユニットテスト時には後者をrequireするという手法があるが、例えばmysql_connect()のような組み込みの関数の場合はそうもいかない。 Test your Legacy PHP Application with Function Mocks!では、PECLのrunkitモジュールを使うことで実行時に関数を再定義してしまう方法が紹介されている。 テスト対象となるすべての関数をいちいち置き換えていくのは大変だし、組み込みの関数を書き換えてしまう場合の副作用も気になるので常に使えるというわけではないけれど、憶えておくと役に立つ時がある