Ho un codice che legge cinque numeri da un database:
class Repository extends DatabaseRepository
{
function getCoefficients(string $model)
{
return $this->getDatabaseLink()->query("
select a, b, c, d, e from coefficients
where model = ? and active = 1
", $model)->getSingleResult();
}
}
Chiamando il metodo sopra restituisce qualcosa del genere:
array (
'a' => '0.0001',
'b' => '0.001',
'c' => '0.01',
'd' => '0.1',
'e' => '1.0'
)
I numeri restituiti possono cambiare nel tempo, in base a quale particolare record è active
in qualsiasi momento.
Come faccio a scrivere un test unitario per questo? Dovrei scriverne uno? Per cosa cerco? Per evitare di trattare con il database live, posso prendere in giro il database, ma poi cosa testerò davvero?
Quello che ho ora
Per ora sono andato avanti e ho scritto un test, che impegna un database live e verifica i numeri esatti che vengono restituiti, ma quel test si interromperà non appena i dati rilevanti cambiano nel database o se l'implementazione del database cambia (dal mio test deve chiamare e impostare il database live).
Domande specifiche
- Che cosa dovrei provare a livello di repository?
- Come posso gestire il fatto che i dati restituiti dal database live possono cambiare?
- Si dovrebbe scrivere un test unitario per questo codice?