# Предикаты

Механизм предикатов позволяет:

* Формировать наборы утверждений и передавать в методы проверки
* Методы для формирования предикатов имеют такой же синтаксис как и утверждения для тестов (`ЮТест.ОжидаетЧто()`)
* Проверять элементы коллекций на соответствие утверждениям

Например

```bsl
    ЮТест.ОжидаетЧто(Коллекция)
        .ЛюбойЭлементСоответствуетПредикату(Ютест.Предикат()
            .Реквизит("Число").Равно(2)); // Проверят, что в коллекции есть элементы с реквизитом `Число`, которое равно `2`
    
    ЮТест.ОжидаетЧто(Коллекция)
        .КаждыйЭлементСоответствуетПредикату(Ютест.Предикат()
            .Заполнено().ИмеетТип("Массив")); // Проверят, что каждый элемент коллекции это заполненный массив
```

## Планы развития

* Описания параметров метода при мокировании

    Например, имеем метод, который принимает в параметрах структуру. Необходимо вернуть 2 разных результата в зависимости от значения реквизита входной структуры.

    ```bsl
    Мокито.Обучение(Модуль)
        .Когда(Модуль.Посчитать(Мокито.Предикат()
                .Реквизит("Оператор").Равно("Сложить")))
        .ВернутьРезультат(Результат1)

        .Когда(Модуль.Посчитать(Мокито.Предикат()
                .Реквизит("Оператор").Равно("Вычесть")))
        .ВернутьРезультат(Результат2);
    ```

* Утверждения, проверяющие данные в базе на основании предикатов.

    ```bsl
    ЮТест.ОжидаетЧтоТаблица("Справочник.Товары").СодержитЗаписи(
        ЮТест.Предикат()
            .Реквизит("Наименование").Равно("Товар 1")
            .Реквизит("Ссылка").НеРавно(Исключение)
    );
    ```

* Перевести обычные утверждения на предикаты