0

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

<?php
class PreferencesAdapter {

    private $_preferences = NULL;

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

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

2 回答 2

1

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

于 2013-01-15T10:28:15.280 回答
0

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

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

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

我喜欢嘲笑这个。请参阅问题Mockery - call_user_func_array() 期望参数 1 是一个有效的回调,例如调用。

于 2013-01-15T16:00:20.563 回答