在不可迁移的遗留代码中提供依赖

时间:2011-05-23 09:55:35

标签: php unit-testing

我有一个遗产类,我很快想要为其编写几个测试。不幸的是,我们在构造函数中有一个单例调用,并且目前还没有足够的时间来重构它。

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>
}

2 个答案:

答案 0 :(得分:2)

  

这样做是否可以接受,以便拥有可模拟的遗留代码:

我猜这是一个好的开始。然后,如果您要重构整个应用程序,您可能需要考虑通过构造函数请求DatabaseConnection,并更改将创建该对象的所有调用。如果您现在只专注于测试那个确切的类,那么您的解决方案是完全可以接受的。

答案 1 :(得分:1)

如果你只想测试这个类 - ,这是正常的代码。

很抱歉1行答案,但您的问题已包含答案:)