Php Yii单元测试和验证码
有人知道如何使用yii1.x避免单元测试(Selenium)中的验证码吗? 我已尝试在测试中使用cuurent captcha值:Php Yii单元测试和验证码,php,unit-testing,selenium,yii,captcha,Php,Unit Testing,Selenium,Yii,Captcha,有人知道如何使用yii1.x避免单元测试(Selenium)中的验证码吗? 我已尝试在测试中使用cuurent captcha值: $vc_key = "Yii.CCaptchaAction." . Yii::app()->getId() . ".site.captcha"; $captchaCode = Yii::app()->session->get($vc_key); -得到了空值。还尝试了: $captcha=Yii::app()->getController(
$vc_key = "Yii.CCaptchaAction." . Yii::app()->getId() . ".site.captcha";
$captchaCode = Yii::app()->session->get($vc_key);
-得到了空值。还尝试了:
$captcha=Yii::app()->getController()->createAction("captcha");
$captchaCode = $captcha->verifyCode;
并得到一个错误:致命错误:对非对象调用成员函数createAction()以这种方式使其工作: 1.在您的测试配置(Yii单元测试使用)中添加一些变量,比如说,它将是“testmode”:
public function captchaValid($field, $params) {
if(!$this->hasErrors($field))
{
if (Yii::app()->params['testmode'] == true) // here is our mark
return;
$vc_key = "Yii.CCaptchaAction." . Yii::app()->getId() . ".site.captcha";
if ( Yii::app()->session->get($vc_key) != $this->{$field} )
{
$this->addError($field, $params['message']);
}
}
}
就这些。对我来说,这是一些额外的补充,但在大多数情况下,上述方法应该是可行的。如果您有什么问题,请告诉我。也许这会有帮助:为什么要投否决票?请留下评论。怎么了?
public function captchaValid($field, $params) {
if(!$this->hasErrors($field))
{
if (Yii::app()->params['testmode'] == true) // here is our mark
return;
$vc_key = "Yii.CCaptchaAction." . Yii::app()->getId() . ".site.captcha";
if ( Yii::app()->session->get($vc_key) != $this->{$field} )
{
$this->addError($field, $params['message']);
}
}
}