我们正在为yii2顶部的所有端点创建邮递员集合。在所有集合中,我们都使用bdd方案,在该方案中,我们需要测试错误消息,当然还要测试成功。我们可以与返回的错误消息进行比较,以使声明通过,但可以更改消息,最终使我们的测试失败。
因此,我不想将其与字符串消息进行比较,而是将其与错误代码进行比较。但是我不知道是否有可能引发像异常这样的错误,可以使用邮递员或招摇工具等代码接收或端点来测试异常。
答案 0 :(得分:0)
我已经解决了这个问题。为了达到我的要求,我需要扩展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']
];
}