我有一些存储库,我有一个方法,我想测试哪个在循环中调用参数作为数组。此方法一次从数组中取值100个项目。所以如果我有一个434项的数组方法应该调用5次。
那么,如果我可以测试这种方法怎么样呢?我需要验证这个方法被调用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个项目。有可能吗?
答案 0 :(得分: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);
// ...