国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

書き直されたタイトルは「テスト目的で Symfony メーラーをシミュレートするにはどうすればよいですか?」です。
P粉739706089
P粉739706089 2023-12-13 09:42:22
0
2
703

私は Symfony 6 プロジェクトのカスタムクラスで Symfony メーラーを使用しています。次のように、クラスのコンストラクターでタイプヒントを介してオートワイヤリングを使用しています。 リーリー

コントローラーで

sendEmail() メソッドを呼び出すと、すべて問題ありません。

次に、

TransportException が正しく処理されるかどうかをテストしたいと思います。これを行うには、メーラーがテストで TransportException をスローする必要があります。しかし、これは私が期待したようには機能しませんでした。

: sendMail メソッドでは有効な電子メール アドレスのみが許可されるため、無効な電子メール アドレスを渡しても例外をスローできません。

私が試したこと:

1) シミュレートされた電子メール プログラムを使用する リーリー

結(jié)果として、

Mailer クラスは final であるためモックできません。

2) モック (またはスタブ) MailerInterface を使用します リーリー

エラーはありませんが、例外もスローされません。メールサービスは置き換えられていないようです。

3) カスタム MailerExceptionTester クラスを使用する リーリー

テスト中:

リーリー

2)と同じ結(jié)果

4) Mailer の代わりに MailerInterface サービスを変更してみてください リーリー

エラー メッセージ:

SymfonyComponentDependencyInjectionExceptionInvalidArgumentException: 「SymfonyComponentMailerMailerInterface」サービスはプライベートであるため、置き換えることはできません。

5) MailerInterface を public に設(shè)定します リーリー

エラー: インターフェース SymfonyComponentMailerMailerInterface をインスタンス化できません

6) MailerInterfaceのエイリアスを追加します リーリー

エラー メッセージ:

SymfonyComponentDependencyInjectionExceptionInvalidArgumentException: 「SymfonyComponentMailerMailerInterface」サービスはプライベートであるため、置き換えることはできません。

自動接続された

MailerInterface サービスをテストで置き換えるにはどうすればよいですか?

P粉739706089
P粉739706089

全員に返信(2)
P粉704066087

最初の試行では、順序は正しいはずです。

リーリー

テストされていませんが、クラスをオブジェクトとして取得しているため、サービスへの依存関係はモック化する前にすでに解決されています。これにより、まずコンテナ內(nèi)のサービスが置き換えられ、次にコンテナから MyClass が取得されます。

ただし、コンテナーの構(gòu)築を完全にスキップすることもできます。 PhpUnitを使用するだけです。

リーリー
P粉226667290

私はこれをやろうとしていますが、あなたがすでに試したことに基づいて解決策を見つけたと思います。

私の services.yamlmailer.mailer サービスを再宣言し、テスト環(huán)境でパブリックに設(shè)定します。 リーリー

この設(shè)定により、Symfony Mailer サービスは以前とまったく同じように動作するはずですが、パブリックになっているため、必要に応じてコンテナ內(nèi)で使用するクラスをオーバーライドできます。

あなたが書いたカスタム Mailer クラスをコピーしました...

リーリー

...テスト コードでは、テスト コンテナーを使用して、

mailer.mailer サービスを例外スロー クラスのインスタンスに置き換えました。 リーリー これで、Mailer サービスを挿入するたびに、使用されるクラスはカスタム例外スロー クラスになります。

最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート