採択 2021/03/28 17:20〜 Track A LT(5分)

データベースを利用したテストを軽〜く実行したい時の味方: vimeo/php-mysql-engine PHPerKaigi 2021

o0h_ きんじょうひでき o0h_

単体テストを作り込んでいくと、「データベースを使う部分をどうするべきか?」という悩みにぶち当たる場面があると思います。
「そもそも”コードのテスト”なのにデータベースに依存するなんて」や「どうしても全体実行に時間がかかるな」などです。

そこで、「vimeo/php-mysql-engine」という選択肢はいかがでしょう?

前口上

丁寧に、クリーンな構造を持ったアプリケーションであれば、その辺りはモックやスタブを利用しながら、「データベース接続」についての一切の関心を外に追いやったテストも可能になるものかと思います。
他方で、「そこまで行っていない」アプリケーションも多いでしょう。
いずれにせよ、既存のアプリケーションやフレームワークといったコードベースに、大幅な手を加えず、それでも「もっとライトにテストを回す」という願望は叶えられないものか・・・

本題

vimeo/php-mysql-engineは、実際のMySQLデータベースを用いずに、(PDO_MYSQLを想定した)RDBMS処理を再現できるライブラリです。
vimeo/php-mysql-engine - Packagist

既存のアプリケーション構造が、リレーショナルデータベースと疎結合にできる”testable"な状態になっていなくても、
php-mysql-engineを利用すれば少ない工数で「自動化テストの効率化」を狙えるかも知れません。

このトークでは、ライブラリの簡単な紹介と、実際にテストに組み込むにはどうすればいいか?を紹介します。