我有一个类,它是一堆模块对象的容器。现在容器接收一个文件路径数组,然后包含文件并实例化模块
class module {
function execute();
}
class container {
public $Name;
public $Modules;
public __construct($Obj){
$this->Name = $Obj->Name;
foreach($this->Modules as $M){
include_once($M);
$className = $this->GetClassName($M);
$this->Modules[] = new $className;
}
}
public execute(){
foreach($this->Modules as $M){
$M->execute();
}
}
}
我不确定重构它的最佳方法是什么,以便它易于测试。
class containerFactory{
public function createContainer($Obj){
$C = new Container($Obj);
$C->InstiateModules();
return $C;
}
}
class container{
public function InstiateModules(){
$tmp = array();
foreach($this->Modules as $M){
include_once($M);
$className = $this->GetClassName($M);
`enter code here`$this->Modules[] = new $className;
}
$this->Modules = $tmp;
}
public function __construct($Obj){
$this->Name = $Obj->Name;
$this->Modules = $Obj->Modules;
}
}
有关我还应该做些什么的任何建议? 感谢
答案 0 :(得分:2)
你可以做两件事:
保持代码不变,并测试该对象实际上做了它应该做的事情。您可以通过将已知数组传递给构造函数,然后测试实际包含这些文件以及实际导入的那些模块来实现。我不熟悉PHP,但我假设有一种方法可以检查文件是否已导入/模块已初始化。
如果上述方法不可用,那么你可以减少你的不确定性足迹...你可以通过在单独的类中进行导入操作和初始化操作,并测试这个类是解析后,正确调用每个文件的导入器和初始化程序。模拟/存根导入器和初始化器是必要的。