1. 目的
前回では、.installファイルを使用してテーブルを作成する方法について確認しました。
今回は最終回として、カスタムモジュールの処理をPHPUnitテストというもので試験してみます。
2. PHPUnitテストの利点
PHPUnitテストを使えば、単体試験をソースコード化することで自動化および再試験の簡略化が出来ます。
Drupalだと固有のUnitTestCaseを継承してテストクラスを作成できます。
final class Issue5MailTest extends UnitTestCase {
今回は、イベントの出欠回答時に通知送信するメールを例にします。
3. メール内容を確認する
下記はメールの件名や本文が想定通りかを確認していくソース例です。
$this->assertSame(
'【イベント通知】出欠回答がありました',
$message['subject']
);
$this->assertContains('■ 出欠: 参加', $message['body']);
assertSame()はメッセージ値が同じかを確認していて、assertContains()は指定した回答内容が含まれているかを確認しています。
4. モックを使用する
実際にメールを送信せずにテストするため、モックを使用しています。
$mail_manager = $this->createMock(MailManagerInterface::class);
$mail_manager->expects($this->once())
->method('mail');
これで、mail()が呼び出されることを確認できます。
5. PHPUnitテストを実行する
Macターミナルかつddev環境を前提に実行します。
ddev exec "cd web && ../vendor/bin/phpunit -c core modules/custom/event_manager/tests/src/Unit"
実行結果は下記になります。
... 3 / 3 (100%)
OK (3 tests, 23 assertions)
3件成功です。
6. 感想
場合によりますが、手作業で試験を回さなくて良いのは便利でした。
次のステップとしてCI/CDパイプラインへの組み込みを検討しても良いかもと思いました。
- 閲覧数 24
コメントを追加