测试构造函数

时间:2013-01-15 08:03:56

标签: unit-testing phpunit

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

<?php
class PreferencesAdapter {

    private $_preferences = NULL;

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

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

2 个答案:

答案 0 :(得分:1)

我在测试方法中模拟load()并验证在创建对象时它被调用一次。

答案 1 :(得分:0)

(为了快速测试,这是你可以做的一个罗嗦的方法。)

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

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

我喜欢Mockery。请参阅问题Mockery - call_user_func_array() expects parameter 1 to be a valid callback,例如调用。