0

私はリポジトリを書いています。オブジェクトのフェッチは、DAO を通じて行われます。オブジェクトの作成と更新は、RequestHandler オブジェクトに渡される Request オブジェクトを介して行われます (コマンド パターンのように)。DAO、Request、または RequestHandler を作成していないため、変更できません。

このリポジトリのテストを作成しようとしています。DAO と RequestHandler の両方をモックアウトしました。私の目標は、モックされた RequestHandler が、新しいオブジェクトまたは更新されたオブジェクトをモックされた DAO に単純に追加することです。これにより、DB と話しているような錯覚が生まれます。このように、このリポジトリを呼び出すすべてのクラスのリポジトリをモックする必要はありません。

問題は、Request オブジェクトが文字列の塊とさまざまな英数字コードの塊であることです。XMLも関係していると確信しています。それは一種の混乱です。別の開発者が、格納されているオブジェクトに基づいて Request オブジェクトを作成するコードを作成しています。また、RequestHandler は、保存しているオブジェクトではなくリクエストを受け取るため、モックされた DAO を更新できません。

問題は、リクエストもモックするか、それとも遅い人がコードを書き終えるまで待ってからテストを書くべきかということです。それとも、リポジトリを呼び出すクラスをテストするときに、それを台無しにしてリポジトリ全体をモックアウトしますか?

ところで、「モック」とは NMock の意味ではなく、メモリ内コレクションで DB を偽造するようなものです。

4

2 に答える 2

2

リポジトリをテストするには、すべての下位層オブジェクトに対してテスト ダブルを使用することをお勧めします。

リポジトリに依存するクラスをテストするには、リポジトリにテスト ダブルを使用することをお勧めします。

どちらの場合も、モック ライブラリによって作成されたテスト ダブル (テストで機能する場合は偽物、テスト対象のオブジェクトに何かを返す必要がある場合はスタブ、本当に必要な場合はモック) を意味します。

メモリ内コレクションを使用して DAO の実装を作成し、上位層の単体テストとは異なるデモまたはテスト システムでデータベースを機能的に置き換える場合。プロトタイプを人々に提供し、物理モデルではなくビジネスオブジェクトに集中できるように、私は似たようなことをしました。ただし、それは単体テスト用ではありません。

于 2008-09-26T21:56:51.233 に答える
0

Web アプリケーションを作成していない可能性がありますが、Repository を使用する NerdDinner アプリケーションを見ることができます。これは、ASP.NET MVC を使用してアプリケーションを作成する方法を説明する無料の PDF で、次の場所にあります: Professional ASP.NET MVC 2.0

于 2009-04-03T16:07:46.147 に答える