私は、マイクロサービスとDockerマルチコンテナーアプリケーションを操作するための開発ワークフローを理解しようとしています。
私が特に解決しようとしていることは、開発に向けた適切な「ライブリロード」ワークフローを取得することです。
例:
私のフロントエンドでは、変更を保存するたびにページを自動的にリロードするwebpack-dev-serverを使用できます。これにより、展開を待つことなく、フロントエンドコードをすばやく簡単に記述できます。
ただし、フロントエンドがREST APIから取得したデータを表示している場合、そのAPIの開発バージョン(それ自体がnodemonを使用してライブでリロードするか、または同様のもの)を実行する可能性があります)またはモックAPI。これは、開発環境のプロキシ構成を使用して、webpackで十分簡単に実現できます。
私のREST API-同様に、他のマイクロサービスをモックしたいと思うかもしれません。たとえば、私のREST APIにPOST =画像を保存するためのエンドポイント-aws-sdkを介してAWS S3バケットに保存します。その機能を模倣したいと思うでしょう。
本質的に-それがどのように見えるか-それはすべての(またはほとんどの)マイクロサービスについてです-私はそれのモックバージョンも作成したいと思います。
私のワークフローが次のようになると想像すると、次のようになります。
私の質問は:
はい、外部サービスのモックアウトは有効なアイデアであり、実際の物理インスタンスなしで変更されていないコードをテストする唯一の方法であることがよくあります。
モック動作は次のとおりであるため、本物のテストインスタンスを使用するほど正確ではありません。
これらは、「何かを壊しただけなのか」、「リターンエラーと予期しないエラーを処理できますか」、「外部サービスのパフォーマンスにどれほど敏感であるか」のテストをすばやく実行するための良い方法です。メンテナンスコストを犠牲にして、システムテストの柔軟性とカバレッジを獲得できます。
多くのウェブサイトはそのようなテストの欠如のためにダウンしていますが、コメンテーターがユニットテストを使用して指摘したように、これはこれらのもののテストカバレッジを取得する唯一の方法ではありません。