如何使用Mockbuilder在Yii2单元测试中调用模型的验证方法?

时间:2017-06-26 05:04:30

标签: php unit-testing yii yii2 codeception

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

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

调用模型的验证方法

这是我的代码:

 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 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}

是否可以使用模拟对象调用模型的验证方法?

0 个答案:

没有答案