Используя 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());
Подтверждение проверки генерирует исключение, в котором говорится, что метод никогда не вызывается таким образом. Однако снятие ограничения и использование вместо него Is.Any
приводит к пропуску. Я не уверен, правильно ли я использую It.Is <> () здесь - это то, на что я интуитивно хочу, чтобы мой тест выглядел, но я не уверен, правильно ли я использую фреймворк. Как правильно оформить этот тест? > ()