Bu kurucu refactor nasıl bu kadar test edilebilir?

1 Cevap php

Ben modülü nesneleri bir grup için bir kap olan bir sınıf var. Şu anda konteyner, dosya yolları bir dizi alır sonra dosyaları içeren ve modülleri örnekler

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();
      }
    }
}

Ben kolayca test edilebilir böylece bu refactor en iyi yolu nedir emin değilim.

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

Any suggestions as to what else I should do? Thanks

1 Cevap

Yapabileceğin iki şey vardır:

  1. Olduğu gibi kod tutmak ve bu nesne aslında kendi yapması gereken ne yaptığını test edin. Sen kurucusuna bilinen bir dizi geçen ve daha sonra bu dosyalar aslında dahil ve bu modüller aslında ithal olduğunu test ederek bunu istiyorum. PHP ile aşina değilim, ama bir dosya / modül başlatıldı ithal olup olmadığını kontrol etmek için bir yöntem var sayıyorum.

  2. Yukarıdaki yöntemler mevcut değilse, o zaman belirsizlik ayak izi aşağı kesebilir ... Eğer ayrı bir sınıfta ithalat eylemleri ve başlatma eylemler sahip, ve bu sınıf doğru ithalatçı ve başlatıcı aradığını sınayarak bu yapardım Onları ayrıştırma sonra dosyaların her biri için. Ithalatçı ve başlatıcı stubbing / alaycı gerekli olacaktır.