Использование Moq для проверки параметра типа List <>?

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

28
задан Chris Trombley 3 January 2014 в 20:14
поделиться