Area di test

0

Sto cercando di capire quale parte del mio codice dovrei testare. Ho del codice. Di seguito è riportato un esempio di questo codice, solo per capire l'idea. A seconda di alcuni parametri, metto l'una o l'altra valuta su "Event" e restituisco la sua serializzazione nel controller. Quale parte del codice dovrei testare? Solo la serializzazione finale, o solo "Event" o ogni metodo: getJson, getRows, fillCurrency, setCurrency?

class Controller {
    public function getJson()
    {
        $rows = $eventManager->getRows();

         return new JsonResponse($rows);
    }
}

class EventManager {
    public function getRows()
    {
        //some code here
        if ($parameter == true) {
            $this->fillCurrency($event, $currency);
        }
    }

    public function fillCurrency($event,  $currency)
    {
        //some code here
        if ($parameters == true) {
            $event->setCurrency($currency);
        }
    }
}

class Event {
    public function setCurrency($currency) {
        $this->updatedAt = new Datetime();
        $this->currency = $currency;
    }
}
    
posta Сергей Студеникин 23.10.2013 - 09:07
fonte

2 risposte

1

Dipende dal tipo di test che si desidera eseguire. Esistono test unitari e test di integrazione.

I test unitari sono test in cui vengono testate singole unità della vostra applicazione. Normalmente, questo si riferisce alle classi. I test di integrazione sono test in cui si verifica come ogni classe / metodo / api / interfaccia interagisce tra loro.

Con test delle unità, come indicato in "The Art of Unit Testing" di Roy Osherove
Dovresti testare ogni metodo che si occupa di qualsiasi forma di logica. Ciò significa che non devi preoccuparti di testare getter e setter a meno che non ci sia la possibilità che chiamare Object.setValue(x) faccia qualcosa di più che semplicemente impostare il valore di Object su x. Ad esempio, controllando se il valore è corretto ecc. Ecco quindi alcuni esempi di codice

boolean setValue(Object x) { value = x; }
boolean setValue(Object x) { if(typeof x == Integer) value = x else value = null}

Il primo non vale la pena di test poiché sei sicuro che il valore sarà sempre x. Il secondo invece vale la pena di provare perché c'è la possibilità che il valore sia impostato su null invece di x.

Puoi guardare alcune delle lezioni / discorsi di Roy qui: link

    
risposta data 23.10.2013 - 09:33
fonte
0

Penso che dovresti testare:  - Event.setCurrency: la data e la valuta nell'istanza sono impostate correttamente? (Questo probabilmente può essere lasciato fuori dal momento che è solo un setter senza la gestione dei dati, ma nel caso in cui questo cambi il test dovrebbe essere a posto)  - EventManager.getRows: restituisce JSON corretto?  - Controller.getJson: si comporta correttamente se getRows restituisce NULL o 0?

Non scriverei un test esplicito per EventManager.fillCurrency dato che alla fine si tratta solo di trasmettere valori.

    
risposta data 23.10.2013 - 09:26
fonte

Leggi altre domande sui tag