我有一个遗产类,我很快想要为其编写几个测试。不幸的是,我们在构造函数中有一个单例调用,并且目前还没有足够的时间来重构它。
function __construct(){
$this->_dbConnect = DbConnect::getInstance();
// very long constructer (sigh) omitted below ...
}
这样做是否可以接受,以便拥有可模拟的遗留代码:
function __construct(DbConnect $dbConnect = null){
$this->_dbConnect = isset($dbConnect) ? $dbConnect : DbConnect::getInstance();
// <snip>
}
答案 0 :(得分:2)
这样做是否可以接受,以便拥有可模拟的遗留代码:
我猜这是一个好的开始。然后,如果您要重构整个应用程序,您可能需要考虑通过构造函数请求DatabaseConnection,并更改将创建该对象的所有调用。如果您现在只专注于测试那个确切的类,那么您的解决方案是完全可以接受的。
答案 1 :(得分:1)
如果你只想测试这个类 - 是,这是正常的代码。
很抱歉1行答案,但您的问题已包含答案:)