Как добавить код ошибки вместе с сообщениями проверки через правила в yii2? - PullRequest
0 голосов
/ 30 декабря 2018

Мы создаем коллекции почтальонов для всех наших конечных точек, построенных на вершине yii2.Во всех коллекциях мы используем сценарии bdd, где нам нужно тестировать сообщения об ошибках и, конечно, успехи.Мы можем сравнить с возвращенными сообщениями об ошибках, чтобы получить пропущенные утверждения, но сообщения могут быть изменены, что в конечном итоге делает наш тест неудачным.

Поэтому вместо сравнения со строковым сообщением я хочу сравнить его с кодами ошибок.но я не знаю, возможно ли выдавать ошибки, такие как исключения, которые можно использовать для тестирования с использованием кодов или конечных точек с помощью инструментов, таких как почтальон или чванство.

1 Ответ

0 голосов
/ 31 декабря 2018

Я решил эту проблему.Чтобы выполнить мое требование, мне нужно расширить валидаторы Yii2, где я перезаписываю метод «validateAttribute».Здесь я могу поднять требуемое исключение с кодом.И это также позволило мне передавать тип и код исключения непосредственно из правил.

namespace common\components\validators;

use yii\base\InvalidArgumentException;

class RequiredValidator extends \yii\validators\RequiredValidator
{
  public $code;
  public $exception;

  public function validateAttribute($model, $attribute)
  {
    parent::validateAttribute($model, $attribute); // TODO: Change the autogenerated stub
     if($this->exception){
        throw new $exception($this->formatMessage($this->message, ['attribute' => $attribute]),$this->code);
     }
  }
}

Это позволило мне определить правила следующим образом.

public function rules(){
  return [
  ['param', RequiredValidator::className(), 'code' => 100102, 'exception' => 'UserCustomException']
];
}
...