Php 如何调用model';使用Mockbuilder在Yii2单元测试中的验证方法?
我是codeception和单元测试的新手。我正在使用内置codeception模块为我的Yii2基本应用程序创建一些测试用例 我正在为更改密码模块创建一个测试用例。我创建了一个模拟更改密码模型。但是,我无法使用该模拟调用模型的validate方法 这是我的密码:Php 如何调用model';使用Mockbuilder在Yii2单元测试中的验证方法?,php,unit-testing,yii,yii2,codeception,Php,Unit Testing,Yii,Yii2,Codeception,我是codeception和单元测试的新手。我正在使用内置codeception模块为我的Yii2基本应用程序创建一些测试用例 我正在为更改密码模块创建一个测试用例。我创建了一个模拟更改密码模型。但是,我无法使用该模拟调用模型的validate方法 这是我的密码: public function testRepeatPassword() { $this->model = $this->getMockBuilder('app\models\ChangePasswordForm
public function testRepeatPassword()
{
$this->model = $this->getMockBuilder('app\models\ChangePasswordForm')
->setMethods(['validatePassword'])
->getMock();
$this->model->expects($this->once())
->method('validatePassword')
->will($this->returnValue(true));
$this->model->attributes = [
'old_password' => 'OldPassword',
'new_password' => 'NewPassword',
'password_repeat' => 'NewPassword'
];
expect_that($this->model->validate());
}
这就是我得到的错误:
PHP Fatal error: Call to undefined method Mock_ChangePasswordForm_09a6c2a3::validate() in /var/www/html/concept_HIS/tests/unit/models/ChangePasswordTest.php on line 92
PHP致命错误“yii\base\ErrorException”,消息为“调用未定义的方法Mock\u ChangePasswordForm\u 09a6c2a3::validate()”
在/var/www/html/concept\u HIS/tests/unit/models/ChangePasswordTest.php:92中
堆栈跟踪:
#0[内部函数]:yii\base\ErrorHandler->handleFatalError()
#1{main}
难道不能使用mock对象调用模型的validate方法吗?您不应该模拟正在测试的类。只模拟依赖项。不应模拟正在测试的类。仅模拟依赖项。 PHP Fatal Error 'yii\base\ErrorException' with message 'Call to undefined method Mock_ChangePasswordForm_09a6c2a3::validate()' in /var/www/html/concept_HIS/tests/unit/models/ChangePasswordTest.php:92 Stack trace: #0 [internal function]: yii\base\ErrorHandler->handleFatalError() #1 {main}