2016-08-24 173 views
1

我有一些存储库,我有一个方法,我想测试哪些在循环中用参数作为数组调用。此方法一次从数组中取100个值。所以如果我有一个434项的方法应该被调用5次。验证使用moq的某些方法的不同参数的多个调用

那么,如何测试这种方法,例如,我需要验证这个方法被调用5次,作为434项参数数组传递?

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,并采取每一个方法调用接下来的100项。可能吗?

回答

1

您可以传递的items范围和比较,如果两个数组包含相同的元素(使用SequenceEqual)验证电话:

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。不客气,我很高兴能够提供帮助。 –

相关问题