Как проверить, что коллекция содержит N элементов, которые удовлетворяют заданному условию? - PullRequest
0 голосов
/ 08 ноября 2019

Платформа Fluent Assertions предоставляет множество связанных с коллекцией утверждений .

Для проверки, содержит ли данная коллекция элемент, удовлетворяющий определенному условию, Iможно использовать Should().Contain:

items.Should().Contain(item => item.Job == Job.Pilot, "because each plane has a pilot");

Я могу убедиться, что только один соответствующий элемент:

items.Should().ContainSingle(item => item.Job == Job.Pilot, "because each plane has one pilot");

Я также могу проверить все элементов, основанных на выражениях (предположительно, независимо от порядка, хотя документы немного расплывчаты по этому поводу):

items.Should().SatisfyRespectively(
    item => item.Job == Job.Pilot,
    item => item.Job == Job.CoPilot,
    item => item.Job == Job.FlightAttendant,
    item => item.Job == Job.FlightAttendant,
    item => item.Job == Job.FlightAttendant,
    item => item.Job == Job.FlightAttendant
);

Как я могу проверить, является ли указанное количество элементов (ни в какой конкретной позициив перечислении) соответствует заданному условию, игнорируя остальные?

Я представляю что-то вроде

items.Should().ContainMultiple(4, item => item.Job == Job.FlightAttendant);

или даже

items.Should().Times(4).Contain(item => item.Job == Job.FlightAttendant);

, ноЯ ничего не нашел в документах.

Я знаю, что могу предварительно отфильтровать свою коллекцию с обычной System.Linq функциональностью , но, конечно, это противоречит (разумно) рекомендация , что

Имея в утверждении Должность () как можно раньше, мы можем включить больше информации в сообщения об ошибках.

Это как-то поддерживается, или это должно куда-то входить в запрос функции?

...