首页 > 解决方案 > 如何使用 PHPUnit 测试构造函数的正确调用

问题描述

使用 PHPUnit,如何正确测试构造函数(对于Built下面简化示例中的类)是否被正确调用?类Container是被测试的类。我希望能够在下面的数组键中捕捉到诸如故意错字之类的东西。不可能模拟构造函数,否则这将是直截了当的。

class Container {
    public function create(string $input) {
        $request = new Built(["rid" => $input]); // Oops, typo in keyname.
    }
}
class Built {
    private $tid;
    public function __construct(array $params) {
        $this->tid = $params["tid"];
    }
}

这与如何对构造函数带有一些参数的类的方法进行单元测试中描述的情况不同?,因为我的测试类正在实例化第二类。

标签: phpphpunit

解决方案


除了 1) 验证传递给它的数据并在数据被拒绝时异常中止对象构造和 2) 将传递给它的数据分配给属性之外,构造函数不应做任何其他工作。因此,关于对象构造唯一可以而且应该测试的是无效数据被拒绝并且不会导致构造违反类契约的对象。


推荐阅读