如何使用PHPunit测试抽象类?

spa*_*tak 4 php phpunit unit-testing

让我们假设我有一个文件 /var/www/project/calculator.class.php

这是班级

namespace App/Module/Calculator; 

abstract class calculator{

 static property $add; 

 static property $result; 

 function add($val_a, $val_b){
    return $a + $b; 
 }

}
Run Code Online (Sandbox Code Playgroud)

我想为上面的类创建一个测试用例,但似乎无法测试它.我陷入了最基本的阶段.

require '/var/www/project/calculator.class.php';

 class CalculatorTest extends \PHPUnit_Framework_TestCase {

    public function testAbstactDatabaseClassExists()
    {

       $this->assertEquals(is_object('Database'), 1);
      $this->assertEquals(true, in_array('Calculator', get_declared_classes()));

    }

 }
Run Code Online (Sandbox Code Playgroud)

无论我做什么,似乎没有办法测试,课程和它的内容.

任何人有任何想法?

小智 11

在测试抽象类时,您可以使用PHPUnit的Mock功能.add方法的示例如下:

public function testAdd() {
    /* @var $calculator \App\Module\Calculator\calculator|\PHPUnit_Framework_MockObject_MockObject */
    $calculator = $this
        ->getMockBuilder('App\Module\Calculator\calculator')
        ->getMockForAbstractClass();

    $result = $calculator->add(13, 29);
    $this->assertEquals(42, $result);
}
Run Code Online (Sandbox Code Playgroud)

有关Mocking的更多信息,请参阅PHPUnit手册.