バックエンドをテストすることで、実際に電子メール サーバーとやり取りするコードの一部を参照し、このレイヤーをモックした残りのソフトウェアをテストすると仮定します。
これは、定義ユニットに応じて、統合テストである場合とそうでない場合があります。率直に言って、あなたがそれを何と呼ぶかは気にしませんが、実行が速く、頻繁に実行される自動化されたテストを作成する場合は、単体テストと同じプラットフォームを使用することもできます。
少なくとも次の 2 つの方法で機能するように、これを記述しようと思います。1 つ目は、必要に応じてセットアップおよび構成できるプロセス ローカルの電子メール サーバーに接続することです。Java ではDumpsterを使用していますが、C++ にも同様のものが存在すると確信しています。2 つ目は、スクリプトを作成できる少なくとも 1 つのローカル電子メール サーバーに接続することです。好きなだけ飛び散らせて(実際のものでも、開発者間で共有しても構いません¹)、それに対して同じ一連のテストを実行できます。その理由は、SMTP サーバーの開発者は誰もが嫌いであり、スタブが本物と同じように機能することを確認する必要があるからです。これはOne Database Per Developerと同等だと思います。
独自の SMTP クライアントを作成しておらず、既存のサード パーティ API の周りにファサードがあるだけの場合、サード パーティ API が十分にボロボロになってバグがすでに発生していると仮定して、これを「統合テスト」する可能性は低くなります。サードパーティの API をモックして、ファサードが期待どおりに機能することを検証します。
1) CI サイクル中にこれを行うことができるので、すべての開発者間で 1 セットの電子メール サーバーを共有し、ローカル実行では C++ Dumpster を同様に使用します。