ジェネリックを使用してプライベートメソッドをテストするためのMoles構文を手伝ってください
-
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つを取る匿名の方法を定義します List
sパラメーターとして、関数に必要なコードを配置します。あなたが返品することを確認してください 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ブレースが必要です。