我开始使用 PHP,所以如果我做错了什么,请原谅我的代码。
让我们看看我对“保险”对象的这种方法,它可以让我返回所有说过保险的客户:
public function getBeneficiarios() {
$petitionsVariables = array(
PeticionDeCoberturaColumns::COBERTURA_ID => $this->getId()
);
$petitions = (new PeticionDeCoberturaDAO())->getByValues($petitionesVariables);
$clientes = array();
foreach ($petitions as $petition) {
$clientes[] = $petition->getClient();
}
return $clientes;
}
所述代码显然不是非常可测试的,因为它与特定的 DAO 耦合。为了正确测试它,我需要模拟 DAO 并注入模拟。
做到这一点的依赖注入方式是
public function getBeneficiarios($dao) {
$petitionsVariables = array(
PeticionDeCoberturaColumns::COBERTURA_ID => $this->getId()
);
$petitions = $dao->getByValues($petitionesVariables);
$clientes = array();
foreach ($petitions as $petition) {
$clientes[] = $petition->getClient();
}
return $clientes;
}
我可以在保险对象构造函数中注入 DAO,但我不喜欢仅仅因为它需要在单个方法上使用而传递无关 DAO 的想法。
每次我想使用 getBeneficiarios 方法时,我都需要先创建 DAO,这听起来非常非常不直观。未来的编码人员不必为此烦恼。
我怎样才能既舒适地使用代码,又舒适地测试代码?