2016-08-24 4 views
1

私はいくつかのリポジトリを持っていて、配列としてパラメータでループ内で呼び出されるメソッドをテストしたいと思います。このメソッドは、一度に100項目ずつ配列から値を取っています。したがって、434個のアイテムを持つ配列がある場合、メソッドは5回呼び出す必要があります。moqを使用して、いくつかのメソッドの異なるパラメータで複数の呼び出しを確認する

この方法は、たとえば次のような場合にどの程度正確にテストできますか?私はこのメソッドを434項目のパラメータ配列として渡すと5回呼び出されることを確認する必要がありますか?

var items = GetListOfStrings(434); // return list with 434 items 

context.Mock<ISomeRepository>() 
      .Verify(method => method.GetSomeItems(It.IsAny<string[]>(), Times.Exactly(5))); 

今私は、パラメータIt.IsAny<string>()として渡しているが、私はitemsを渡し、1回のメソッド呼び出しごとに次の100の項目を利用したいと思います。出来ますか?あなたがitemsの範囲を渡し、二つの配列は、(SequenceEqualを使用して)同じ要素が含まれている場合と比較することによって通話を確認することができる

答えて

1

List<string> items = GetListOfStrings(494); 

Mock.Get(someRepository).Verify(repository => repository.GetSomeItems(It.Is<string[]>(strings => strings.SequenceEqual(items.GetRange(0, 100)))), Times.Once); 
Mock.Get(someRepository).Verify(repository => repository.GetSomeItems(It.Is<string[]>(strings => strings.SequenceEqual(items.GetRange(100, 100)))), Times.Once); 
Mock.Get(someRepository).Verify(repository => repository.GetSomeItems(It.Is<string[]>(strings => strings.SequenceEqual(items.GetRange(200, 100)))), Times.Once); 
// ... 
+0

は、男をありがとう! –

+0

@ MaximKonyuh。あなたは歓迎です、私は助けることができてうれしいです。 –

関連する問題