0

次のようなメソッドの署名があります: private IEnumerable BuildCustomerUpdatePlan(List localCacheChangedCustomers, List crmChangedCustomers){}

成形されたオブジェクトを見ると、メソッドの呼び出し方法とテスト方法の構文 (IntelliSense) が完全に混乱し、試してみるとコンパイル エラーが発生します。MSFT のサイトで提供されている基本的なチュートリアルを見てきましたが、Moles を使用してプライベート メソッドをテストする方法や、戻り値の型と複数のパラメーターを処理する方法がわかりません。

残念ながら、INT を吐き出して INT を受け入れる単純な Add() メソッドを使用するだけでなく、より複雑なサンプルを示す他の良い HOWTO やスレッドを見つけることができませんでした。:(

チップ?

4

1 に答える 1

0

テスト プロジェクトでは、最初に、テスト対象のアセンブリに対応する Moles アセンブリを必ず追加してください。また、モールドされたアセンブリを使用できるように、usingテスト中のアセンブリのステートメントを追加する必要があります。.Moles

Moles は、クラスとメソッドの名前を の形式に変更しますM[Original Class Name].[Original Method Name][typeof param1][typeof param2]...。あなたの場合、そのメソッドの迂回は次のようになりMClass.BuildCustomerUpdatePlanListList = (List x, List y) => { [code]};ます。これは、2 つの s をパラメーターとして受け取る匿名メソッドを定義し、List必要なコードを関数に配置します。IEnumerableその匿名メソッドでを返すことを確認してください。

Moles を使用して迂回する例を次に示しDirectory.GetFilesます。

using System.IO.Moles;
[assembly: MoledType(typeof(System.IO.Directory))]
...
    MDirectory.GetFilesStringString = (string x, string y) => new string[0];

Directoryクラスは のメンバーであるため、アセンブリのモールディング メンバーを使用することを指定するためSystem.IOに使用します。using System.IO.Moles;

Moles では、Moled のタイプを指定する必要があります[assembly: MoledType(typeof(System.IO.Directory))]

最後に、Directory.GetFiles2 つの文字列をパラメーターとして取り、文字列配列を返します。ファイルが見つからない場合と同等の結果を返すようにメソッドを迂回させるために、moled メソッドは単に を返しますnew string[0]。匿名メソッドに複数の行が必要な場合は中括弧が必要です。また、void メソッドを迂回しない場合は、元のメソッドが返す型と一致する return ステートメントが必要です。

于 2011-09-08T14:37:30.603 に答える