php - 如何使用 PHPunit 测试抽象类?

标签 php unit-testing phpunit

假设我在 /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; 
 }

}

我想为上面的类创建一个测试用例,但似乎无法测试它。我停留在最基本的阶段。

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()));

    }

 }

无论我做什么,似乎都没有办法测试类(class)及其内容。

有人知道吗?

最佳答案

测试抽象类时,可以使用PHPUnit的Mock特性。添加方法的示例如下:

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

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

关于php - 如何使用 PHPunit 测试抽象类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24099338/

相关文章:

unit-testing - Python 3 unittest 模拟用户输入

swift - 无法在 xctest 中导入主应用程序模块

angular - 单元测试 valueChanges 可观察管道

php - 如何使用 PHPUnit 对类型提示进行单元测试

Laravel 单元测试 - 运行所有测试

javascript - 如何获取输入值到php var

php - 在 PHP 内置的 Web 服务器中打印一些东西

php - 选择指定id的条目,以及前后具有相同外键值的条目

php - symfony2 Controller 的功能测试 : How to generate a route

php - 由于 DATETIME 数据,java.lang.String 类型的值 <br 无法转换为 JSONObject