問題タブ [pact-net]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dependency-injection - 別のアセンブリから Asp.Net コア WebAPI でサービスを構成する方法
マイクロサービス環境では、契約ベースのテスト用のフレームワークを構築する必要があります。私は現在、プロバイダー テストを実行するために、単一のサービスを外部依存関係から分離する方法を調査しています。
私がする必要があるのは:
- WebApi プロジェクトをそのまま維持する
- いくつかの構成の違いを使用して WepApi のインスタンスを開始します
- 選択した依存関係をモックアウトする
私のソリューション構造はこれです:
dotnet での Pact テストに関するこのガイドを読みました。に焦点を当てると、プログラムで(および Pact 自体の別の WebHost)からCase.Pace.ProviderTest
開始し、その依存関係の一部を置き換える必要があります。Case.Api
Case.Pact.ProviderTest
これまでのところ、私はこれを得ました:
を含む行では、必要な依存関係を.UseStartup<CaseStartup>()
単純にコピーStartup.cs
して変更しましたが、これは正常に機能します。Case.Api
しかし、より一般的なソリューションが必要です。コードをコピーして 1 日で終了するのは適切ではありません :) これは、他のサービスで一般的ではなく、再利用可能ではないためです。
それで私は掘り続け、次のことを思いつきました。
別のアセンブリ
から StartUp を使用して IWebhost を開始しても、そのアセンブリからコントローラーが自動的に追加されないことに気付きました。これは明示的に行う必要があります。だから私はこれをしました:
素晴らしい!!!ここまでは順調ですね。
次号:
依存関係を置き換える:この
記事を
読み直して、依存関係を置き換えるための拡張メソッドを作成しました。
したがって、必要な依存関係を次のように置き換えることができます: (この場合は QueryHandler)
しかし、これはコピーされたコードに関する私の問題を解決しません。
私の甘い夢は、すべての冗長なコードを持たずに、依存関係を置き換えるためにfrom を使用Startup.cs
し、何らかの方法で DI を微調整できるようにすることです。Case.Api
どんな入力も非常に高く評価されます。
ありがとう :)
pact - PACT - プロバイダー サービスの状態を処理し、モックまたは実際のデータベースを使用して実際のプロバイダーを実行する
私は PACT を初めて使用し、.net マイクロサービスの契約テストに pact-net を使用しようとしています。pact ファイルを生成する消費者テストの概念を理解しています。プロバイダーの状態が、生成された協定の Given() 条件と一致することを確認する役割を担うプロバイダー状態ミドルウェアの概念があります。次のこと、またはこれを達成する方法について少し混乱しています。
プロバイダー テストは、実際のサービスに対して実行されます。そのため、テストを実行する前にプロバイダー サービスを開始します。私のプロバイダー サービスは、データベースとやり取りしてレコードを保存および取得します。PACT では、サービスのすべての依存関係をスタブ化する必要があるとも述べています。
- それでは、実際のデータベースに対して実行されている実際のプロバイダー API を実行しますか?
- 実際のデータベースに対して API を実行する場合、どのようにデータをデータベースに注入しますか? プロバイダー API の独自のエンドポイントを使用して、Given() データを追加する必要がありますか?
- 上記が正しいアプローチではない場合、それは何ですか?
私が遭遇したすべての基本的なブログ記事はこれを説明しておらず、通常、プロバイダーの状態のない例や、ファイル システム上の単なるテキスト ファイルである状態の例があります。
助けていただければ幸いです。