帮助设计和(更重要的是)单元测试。 (像战略模式的东西)

时间:2011-06-23 21:02:49

标签: php unit-testing oop

我正在研究简单的基准“框架”(原因:无聊和实践)。 现在我正试图解决一些问题。 首先要做的事情是:

class DataManager {

    private $persistanceStrategy;

    public function __construct(IPersistence $persistenceStrategy) {
        $this->persistanceStrategy = $persistenceStrategy;
    }

    public function saveData() {
        $this->persistanceStrategy->saveData($params);
    }

    public function getData() {
        $this->persistanceStrategy->getData($params);
    }
}

interface IPersistence {
    public function saveData(array $params);
    public function getData(array $params);
}

class XMLPersistence implements IPersistence {

    // Params would contain something like path to the
    // xml file, and unique name of some tag
    public function saveData(array $params) {
         // write something to xml file
    }
    public function getData(array $params) {
       // get something from xml file
    }
}

class DBPersistence implements IPersistence {
 // $params would contain unique name of data that is needed
 // and data for db connection
  ...
}

class SessionPersistence implements IPersistence {
  ....
}

问题:

  1. 是否有更好的方法来设计这部分代码。

  2. 有人会如何测试DataManager类和“策略”类?

1 个答案:

答案 0 :(得分:3)

  1. 在这里使用stragety模式对我来说很有意义,所以我没有任何改进建议。

  2. 这是一个博客,有一种方法可以测试你的DataManager类。基本上你给它一个模拟策略类,并确保确实调用了正确的策略方法。

    Testing Your Mocks

    我认为测试持久化类很简单,确保XMLPersistence创建预期的xml数据,DB将数据放入预期的数据库中,并且可能会针对预期的序列化声明Session。