問題タブ [mediatr]
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.
.net - CQRS ハンドラーまたは Web Api コアでの要求出力全体をテストする必要がありますか?
私はしばらく Web API を作成してきましたが、インフラストラクチャ コード (コントローラー、リクエストなど) に一切触れずに CQRS ハンドラー (Mediatr で管理) をテストできることをうれしく思いました。コントローラーが行うべきことを行っていたため、非常に薄いものでした: リクエストとレスポンスの間で通信します:
しかし、それでも私の Handlers テストがカバーしていないケースがありました。以下にいくつかの例を示します。
- 承認。「間違った」ユーザーが特定のアクションにアクセスしようとしたかどうかをテストできませんでした。彼はアクセス拒否エラーを受け取りました。つまり、特定のアクションの承認属性をテストできませんでした。
- エラー処理。Handler が特定の条件下で特定の例外をスローしたことを確認できましたが、インフラストラクチャ (つまり、例外ミドルウェア) がこの例外を処理する方法を制御できませんでした (つまり、特定の HTTP エラーが発生しました)。
ASP.NET Core により、リクエスト イン レスポンス アウトの統合テストが非常に簡単になり (TestServer のおかげで)、統合テストでこれら 2 つのケースをカバーできます。
私を悩ませているのは、代わりにリクエストを送信してレスポンスをアサートすることによって、ハンドラー テストを維持するか、アクションをテストするかです。
Handler テストが大好きです。かわいくて、はっきりしていて、書きやすいです。リクエスト全体をテストすることははるかに強力ですが、同時に比較的低レベルのアプローチであり、http と json を処理する必要があるため、面倒です。
この選択は非常に紛らわしいので、推奨されるアプローチを知りたいです。
entity-framework-6 - Mediatr Handler の作成と呼び出しを autofac ライフタイム スコープでラップする
私のweb.apiアプリケーションでは、EntityFramework 6 (EF6)、MediatR、およびAutofacを使用しています。RequestHandler 呼び出しごとに作業単位を取得するために、MediatR RequestHandlersに一致する有効期間を持つ EF6 DbContext を作成したいと考えています。
私はまだ解決策を見つけていません。IDBContext を InstancePerMatchingLifeTimeScope(wellknown-object) に登録できるように、ハンドラーの作成とハンドラーの呼び出しの両方を、wellknown-object でタグ付けされた AutofacLifeTimeScope 内にラップする必要があるようです。
多分あなたは別の解決策を提案できますか?