Nao000のぶろぐ

蝶を追っている少年になりたい

PHPUnit のスタブとモックオブジェクトを少し調べたときの印象

印象

どちらも既存クラスの処理をテスト内で置き換えられるようです。ただ、自分が期待していた「クラス内の依存を置き換える」ような機能はやはり無いようでした。

createMock で作成するモックオブジェクトはテストコード内で生成して、プロダクションコードに注入するやり方は出来るようです。

https://phpunit.readthedocs.io/ja/latest/test-doubles.html#test-doubles-mock-objects-examples-subjecttest-php

例では、タイプヒンティング付きのメソッド public function attach(Observer $observer) にテストコード内で生成したモック $observer = $this->createMock(Observer::class); を渡していました。

やはりテスト可能なコード設計は必要そうだなという感じです。テスト可能なコードになっていれば createMock で生成せずとも、「テスト用のモックを作ればよくね?」という印象です。

参考

https://phpunit.readthedocs.io/ja/latest/test-doubles.html#