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
Unit testing 测试构造函数_Unit Testing_Phpunit - Fatal编程技术网

Unit testing 测试构造函数

Unit testing 测试构造函数,unit-testing,phpunit,Unit Testing,Phpunit,我的构造函数使用从数据库加载的数据设置属性。 如何测试它是否真的从db加载数据?我想要100%的测试覆盖率,所以我需要测试我的每一段代码 <?php class PreferencesAdapter { private $_preferences = NULL; public function __construct() { ... $this->load(); ..

我的构造函数使用从数据库加载的数据设置属性。 如何测试它是否真的从db加载数据?我想要100%的测试覆盖率,所以我需要测试我的每一段代码

<?php
class PreferencesAdapter {

    private $_preferences = NULL;

    public function __construct() {         
                ...
        $this->load();
                ...
    }

    public function load() {
        ...
        $this->_preferences= DataFromDb();
    }
}
?>

我会在一个测试方法中模拟
加载()
,并验证它在创建对象时是否被调用过一次。

(为了快速测试的利益,这里有一个冗长的方法可以做。)

或者,将相关查询作为公共方法放入类PreferencesAdapterQueryCollection中,并将其作为可选构造函数参数注入PreferencesAdapter。(如果没有发送参数,只需在此处实例化PreferencesAdapterQueryCollection。)

在PreferencesAdapterTest中,发送一个模拟的PreferencesAdapterQueryCollection,其中包含其公共简单查询方法的期望值和返回值

我喜欢嘲笑这个。参见问题,例如调用