ホームページ  >  記事  >  バックエンド開発  >  application-go + BDD-java でサードパーティ サービスをシミュレートする

application-go + BDD-java でサードパーティ サービスをシミュレートする

WBOY
WBOY転載
2024-02-11 13:39:171051ブラウズ

application-go + BDD-java 中模拟第三方服务

php エディター Zimo が今日紹介するのは、application-go BDD-java でサードパーティ サービスをシミュレートする方法です。ソフトウェア開発中はサードパーティのサービスとやり取りする必要があることがよくありますが、テスト段階ではこれらのサービスに直接アクセスできない場合があります。この問題を解決するには、application-go と BDD-java を使用してサードパーティ サービスの動作をシミュレートし、より効果的なテストを行うことができます。続いて、具体的な実装方法を見ていきましょう!

質問内容

最近BDD(Gherkin Restassuredを使用)の研究を始めました。サードパーティのサービスをシミュレートする必要があります。以下は私の使用例です。

  1. サービス A は内部的にサービス B
  2. を呼び出します
  3. アプリケーションは goLang にあります。
  4. BDD は Java 言語を使用します。

rpm を生成し、その rpm を仮想マシンにデプロイする CI パイプラインが実行されています。 この VM 上で BDD を実行します (現在、サービス A とサービス B は同じ VM にデプロイされています)

Service-B に依存しなくても済むように Service-B をモックする方法はありますか? 「はい」の場合、最善のアプローチは何ですか。

goLang httptest を試して単体テスト レベルでサービスをモックしました。 ただし、BDD を使用してパイプラインで rpm を作成した後にシミュレーションする方法。

ありがとうございます

回避策

サービス A が Web や RPC 経由ではなく内部的にサービス B を呼び出す場合、依存関係注入を使用してサービス B の「false」「バージョン」を注入できます。 (これには必ずしも依存関係注入フレームワークが含まれるわけではないことに注意してください。コンストラクターベースおよびプロパティベースの注入も有効です)。サービス B にインターフェイスがない場合は、インターフェイスを抽出し、シン アダプターを使用して、環境に応じて本物のサービスまたは偽のサービスを呼び出します。

シーンがサービス A の UI または API とのみ対話する限り、シーンを変更する必要はありません。

実際のコードの代わりに偽のコードをデプロイメントに使用するように、ビルド パイプラインの動作方法を変更する必要があります。

これを実行時に実行することもでき、アダプターに関連するサービスを呼び出すことで、偽物から本物に切り替えることができます。切り替えまたはデプロイメントは、環境変数またはビルド パラメーターによってトリガーできます。

ただし、テスト サービスを運用環境に展開しないように注意してください。

継続的デプロイメントを使用する場合、理想的には、ビルド パイプラインの最後のステップでデプロイし、実際のサービスとの対話をテストする必要があります。何らかの理由でこれが唯一の作業方法である場合でも、役立つ可能性のあることがいくつかあります。

  • サービス B が使用するデータをスタブ化して、サービス B が予測可能な方法で動作するようにすることができます。

  • テスト インスタンスを使用できます。サービスプロバイダーに問い合わせて、適切なサービスがあるかどうかを確認してください。実稼働環境で実行する必要がある場合でも、できれば何らかの自動テストを使用して、実際のサービスのデプロイが成功したかどうかを確認することをお勧めします。基本的なスモークテストを実行して、システムが接続されているかどうかを確認してください。導入が簡単であればあるほど、エラーからの回復も容易になります。すぐに導入できない場合は、より徹底的な検査が必要になることに注意してください。
  • RPM がいかなる種類のフェイク インスタンスやテスト インスタンスも使用せずに作成およびデプロイされ、そのようなフェイク インスタンスやテスト インスタンスを使用するように環境を構成できない場合、それをモックすることはできません。ビルド パイプラインはデプロイメント フォージェリの一部である必要があります。 CI パイプラインを制御できる場合は、これは問題になりませんが、そうでない場合は、ビルド チームに問い合わせてください。彼らは経験を持っているか、あなたを助けてくれる人を紹介してくれるかもしれません。結局のところ、優れた BDD は対話によって推進されます。

以上がapplication-go + BDD-java でサードパーティ サービスをシミュレートするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。