Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何调用model';使用Mockbuilder在Yii2单元测试中的验证方法?_Php_Unit Testing_Yii_Yii2_Codeception - Fatal编程技术网

Php 如何调用model';使用Mockbuilder在Yii2单元测试中的验证方法?

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

我是codeception和单元测试的新手。我正在使用内置codeception模块为我的Yii2基本应用程序创建一些测试用例

我正在为更改密码模块创建一个测试用例。我创建了一个模拟更改密码模型。但是,我无法使用该模拟调用模型的validate方法

这是我的密码:

 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}