gpt4 book ai didi

php - 帮助设计和(更重要的)单元测试。 (类似于策略模式)

转载 作者:行者123 更新时间:2023-12-04 06:21:47 25 4
gpt4 key购买 nike

我正在研究简单的基准“框架”(原因:无聊和练习)。
现在我正在努力解决一些问题。
第一件事:

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

问题:
  • 有没有更好的方法来设计这部分代码。
  • 有人将如何对 DataManager 类和“策略”类进行单元测试?
  • 最佳答案

  • 在这里使用策略模式对我来说很有意义,所以我没有任何改进建议。
  • 这是一个博客,其中包含一种测试 DataManager 类的方法。基本上你给它一个模拟策略类,并确保确实调用了正确的策略方法。

    Testing Your Mocks

    我认为测试持久性类很简单,确保 XMLPersistence 生成预期的 xml 数据,DB 将数据放入预期的数据库中,并且 Session 可能针对预期的序列化进行断言。
  • 关于php - 帮助设计和(更重要的)单元测试。 (类似于策略模式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6460571/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com