Considera questa classe di esempio che nel crittografare alcuni dati e inviarli ad un altro servizio.
Considera il test per il metodo redirect
.
Ecco come si consuma la classe:
<?php
$safeLink = new SafeLink('some_secret_key');
$safeLink->redirect('http://external.service.com/receiver.php', $someData);
e la classe è smt. come:
<?php
class SafeLink
{
public function encrypt($data)
{
return ....
}
public function redirect($url, $data)
{
$encryptedData = $this->encrypt($data);
header('HTTP/1.0 302', true, 302);
header('Location: http://example.com?' . $encryptedData, true);
exit;
}
}
Quindi ho due domande:
- Come verificherai questa lezione considerando l'intestazione e le direttive di uscita ...
Quello che farei normalmente per testare questo sarebbe l'invio di $url
e $data
e ottenere l'URL reindirizzato in qualche modo (probabilmente usando una classe wrapper per header
) e verificare se i dati sono crittografati correttamente.
Stavo sperimentando phpecec su questo e non riuscivo a prendere in giro le cose e durante le indagini ho trovato in this article che i test di unità non dovrebbero essere usati per testare stati, sarebbe un test di integrazione in realtà. Questo ha senso per me ora, ma sono un po 'confuso ...
- Quindi, se questo è il caso, cosa testeresti per questo metodo di reindirizzamento, l'unica opzione che posso pensare è testare se è callable con
$url
e$data
, è tutto per il test dell'unità?