Используя Moq, я хотел бы иметь возможность проверить, что выполняются определенные условия для параметра, передаваемого на вызов издевающегося метода. В этом случае я хотел бы проверить, что список, переданный в издеваемый метод, имеет определенный размер:
var mockSomeRepository = new Mock<SomeRepository>();
mockSomeRepository.Setup(m => m.Write(It.IsAny<List<SomeDTO>>())).Verifiable();
var mainClass = new MainClass(mockSomeRepository.Object);
List<SomeDTO> someList = GetListWith25Items();
mainClass.DoRepositoryWrite(someList); // calls SomeRepository.Write(someList);
mockSomeRepository.Verify(m =>
m.Write(It.Is<List<SomeDTO>>(l => l.Count() == 25)), Times.Once());
Проверка assert выдает исключение, в котором говорится, что метод никогда не вызывается таким образом. Однако удаление ограничения и использование Is.Any<List<SomeDTO>>()
вместо этого приводит к проходу. Я не уверен, что я правильно использую It.Is < > () здесь - это то, на что я интуитивно хочу, чтобы мой тест выглядел, но я не уверен, правильно ли я использую фреймворк. Как должным образом создать этот тест?