ジェネリックを使用してプライベートメソッドをテストするためのMoles構文を手伝ってください

StackOverflow https://stackoverflow.com/questions/7340507

  •  27-10-2019
  •  | 
  •  

質問

私は次のような方法の署名を持っています:private ienumerable buildcustomerupdateplan(リストlocalcachechagedcustomers、list crmchangedcustomers){}

溶けたオブジェクトを見ると、メソッドを呼び出してテストする方法の構文(Intellisense)が私に絶対に混乱し、ショットを与えるたびにコンピレーションエラーが発生します。 MSFTのサイトで提供されている基本的なチュートリアルを調べましたが、ほくろを使用してプライベートメソッドをテストする方法や、リターンタイプと複数のパラメーターを処理する方法を確認しません。

不幸なことに、私は他の良いHowto'sまたはスレッドを見つけることができず、INTを吐き出してINTを受け入れる単純なadd()メソッドを操作するよりも、より複雑なサンプルを実証することができませんでした。 :(

チップ?

役に立ちましたか?

解決

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

モールはクラスの名前とメソッドをフォームに変更します M[Original Class Name].[Original Method Name][typeof param1][typeof param2].... 。あなたの場合、その方法の迂回路は MClass.BuildCustomerUpdatePlanListList = (List x, List y) => { [code]};. 。これは、2つを取る匿名の方法を定義します Listsパラメーターとして、関数に必要なコードを配置します。あなたが返品することを確認してください IEnumerable その匿名の方法で。

これがほくろを迂回する例を示します 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; アセンブリの溶けたメンバーを使用したいことを指定します。

モールでは、溶けた型を指定する必要があります。 [assembly: MoledType(typeof(System.IO.Directory))] 仕事はします。

ついに、 Directory.GetFiles 2つの文字列をパラメーターとして使用し、文字列配列を返します。メソッドを迂回するために、見つかったファイルなしに相当するものを返すために、溶けた方法はただ戻ってきます new string[0]. 。匿名メソッドの複数の行が必要な場合、およびvoidメソッドを迂回しない場合は、元のメソッドが返すタイプと一致するreturnステートメントが必要な場合にcurlyブレースが必要です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top