Ich muss Tests für eine PHP-Klasse schreiben, die einen Ressourcentyp verwendet, der von einer von uns verwendeten Apache-Erweiterung erstellt wurde, aber sagen wir, es ist eine Datenbankklasse mit dem Ressourcentyp mysql.mock php's Ressourcentyp für Unittests
offensichtlich möchte ich diese globalen Funktionen spotten, aber wie man den Rückgabetyp fälscht, wenn die Klasse überprüft, ob die Ressource gut erstellt wurde?
die Resource-Seite in php doc sogar einen Kommentar über die Unfähigkeit von Mocks zum Testen. Ist das die endgültige Antwort?
lassen Sie uns sagen, dass ich die (lame Beispiel) Code haben:
class DB {
function init(){
$this->handle = mysql_connect('myserver');
if(get_resource_type($this->handle) != 'mysql') return false;
return true;
}
}
und dann die Tests, die für einen Erfolg und einen Fehler zu testen, von mysql_connect
spöttisch.
Ich sehe Sie nicht Punkt ... Was wäre, wenn ich diese Klasse testen sollte, und direkt vor curl_exec überprüfte es die Art der Ressource war die ursprüngliche Curl-Typ? und ich wollte es nicht mit echten Curl-Funktionen? – gcb
@gcb: Entweder möchten Sie die Curl-Klasse in einem Unit-Test testen (wenn Sie dies tun, ist das Handle ein internes und muss nicht getestet werden) oder Sie möchten eine andere Komponente testen, die das Curl verwendet 'Klasse, dann kannst du es der Klasse' Curl' nachspielen. – hakre
Wenn ich die 'Curl'-Klasse teste, wie vermeide ich es dann, Webserver zu treffen und inkonsistent zu sein? – gcb