lynicidn писал(а):особо выгоды нет, думаю интересней было бы - тестировать по фикстурам - валидные, не валидные (не лоадить вбазу),
а так все это делается просто assertTrue($model->isSafeAttribute('phone'))
облегчило бы тестить к примеру сразу сценарий, от и до, и к примеру прилагать что ожидается - массив ошибок или тру(при сохранении)
охватить - валидацию и сохранение
Думаю очень сложно создать фикстуры на все вариации валидных и не валидных данных. А для одного атрибута такая проверка
есть. Те в тесте пишем тех требование, например "логин должен быть не менее 5 символов".
Код: Выделить всё
$validator = new ModelMatcher('app\models\User');
$validator->matchLength('login', 5);
Код теста сам создает валидную и не валидную строку и проверяет, что модель правильно ее провалидировала. Нужно просто дописать побольше таких matcher-ов. Можно даже вообще абстрагироваться от реализации в модели, но пока у меня загвоздка в регулярных выражениях. Для того-же логина у меня валидация не проходит из-за наличия других правил, а генерить строку по регулярке я еще не пробовала.
lynicidn писал(а):
затея так то крутая, но даже нет поддержки массивов аттрибутов
Думала об этом, но потом решила, что множество assert-ов в одном тесте не есть хорошо. Нужно разобраться, как генерировать собственный текст ошибок в phpUnit тогда можно делать массив атрибутов. А пока представьте у вас тест падает и говорит "Failed asserting that false is true" и поди догадайся для какого атрибута из массива атрибутов не прошла валидация.
Спасибо за коммент и мнение