2
public myReturnObj MethodA(System.Linq.IGrouping<string, MyObject> group){
 ...
foreach (MyObject o in group)
{
    //business process
}
...
return myReturnObj; }

パラメータとして渡す NUnit Mock オブジェクトを設定し、単体テストで MethodA の結果を確認したいと考えています。

この IGrouping をモックするにはどうすればよいですか?

4

2 に答える 2

2

インターフェイスをモックアップするのと同じ方法で IGrouping(string, MyObject) をモックアップできますか?

DynamicMock myMockGrouping = new DynamicMock(typeof IGrouping<string, MyObject>);

または、よりライブなバージョンを使用することもできます:

List<MyObject> inputs = GetInputs();
IGrouping<string, MyObject> myLiveGrouping = inputs
  .GroupBy(o => "somestring").First();
于 2009-01-14T05:19:53.637 に答える
0

私はモックオブジェクトに非常に慣れていません。私の頭の中で初めて、DynamicMock() オブジェクトをインスタンス化してから、その ExpectAndReturn() メソッドを続行しようとしています。

IGrouping インターフェイスの場合、プロパティは Key の 1 つだけです。したがって、ExpectAndReturn を設定して foreach で機能させたい場合は、IEnumerator の Current、Next()、Reset() を実装する必要があるかもしれません。

モック オブジェクトを設定するのは簡単ではなく、多くの開発時間を無駄にします。

今私の解決策は次のようなものです:

    //prepare expected list of objects that want to be tested
        List<MyObject> list = new List<MyObject>();
        list.Add(new MyObject() {BookingNo="111",...});
        list.Add(new MyObject() {BookingNo="111",...});

        // grouping objects in list
        IEnumberable<IGrouping<string, MyObject>> group = list.GroupBy(p => p.BookingNo);

//in my test method
myReturnObj  obj = MethodA(group.First());
Assert.xx(...);

どうもありがとう、デビッドB!

于 2009-01-14T08:23:41.160 に答える