Heim > 类库下载 > PHP类库 > Hauptteil

Erste Einführung in die Rückgabedaten der PHPunit-Stub-Simulation

高洛峰
Freigeben: 2016-10-09 11:12:16
Original
1257 Leute haben es durchsucht

Dies ist eine Kombination aus PHPunit-Dokumentation und Erklärungen von Experten aus dieser Zeit. Ich möchte das Wissen, das ich gelernt habe, aufzeichnen, es in Zukunft als Referenz ergänzen und das Gelernte verbessern.

Wir im Allgemeinen Verwenden Sie Einzeltests, um das Unternehmen zu testen. Testen Sie den Code im Unternehmen, und er wird Ihnen dabei helfen, die kleinen Bereiche zu finden, in denen Ihre Überlegungen nicht umfassend genug sind. (Obwohl Daniel sagte, dass man zuerst Unit-Tests und dann den Implementierungscode schreiben kann, habe ich jetzt das Gefühl, dass ich davon noch weit entfernt bin)

Stub (Stub):

„Die praktische Methode, ein Objekt durch ein Test-Double zu ersetzen, das (optional) einen konfigurierten Rückgabewert zurückgibt, nennt sich Stubbing“ – so lautet die Erklärung des Stubbings in der offiziellen Dokumentation

Jetzt kann ich es Ich verstehe es, wenn ich zurückblicke. Wie soll ich es ausdrücken? Nimm eine Birne.

==== Prämisse

Was ich testen möchte, ist diese Methode: switchClothes($username) ---- Fragen Sie die Datenbank nach Namen ab. Wenn das Geschlecht 1 ist, wird die Hose zurückgegeben werden. Ja 0, den Rock zurückgeben

<?php
        Class Switch{
            public function switchClothes($username){
                $database=new database();
                $gender=$databse->find("id=$username");
                if($gender==0){
                        return "裙子";
                }else{
                        return "裤子";
                }
            }
        }
Nach dem Login kopieren

Um die Datenbank abzufragen, habe ich eine Datenbankklasse gekapselt: find()

====Start den Test schreiben

Das erste, was ich testen muss, ist die Klasse switchClothes, aber in dieser Klasse muss ich die Datenbankklasse instanziieren und die Select-Methode verwenden, die Datenbank abfragen und dann herausfinden, ob ich Hosen oder Hosen möchte ein Rock. Es ist also wirklich zu mühsam, die Logik dieser Methode zu testen. Wenn der Benutzername nicht vorhanden ist, muss ich dann zu viel in die Datenbank gehen? Ärger und nicht gut genug. Wenn Sie eine Methode testen müssen, die die Aktualisierung von Daten umfasst, müssen Sie die Daten dann wirklich ändern?

Der Stub ist wunderbar angekommen. Mama muss sich keine Sorgen mehr machen, dass ich die Datenbank bediene, und sie muss sich auch keine Sorgen mehr machen, dass die Benutzeroberfläche unverständlich ist.

Erste Einführung in die Rückgabedaten der PHPunit-Stub-SimulationIch kann diese Klasse stoppen. Um es einfach auszudrücken: Ich denke, es handelt sich um eine Simulation dieser Klasse und einer gefälschten Datenbankklasse.

Es ist wie oben: A=switchClothes B=Datenbankklasse D=Datenbank C=Stub-Klasse

Ursprünglich sollte A B anrufen, und B fragt die Datenbank ab. Die rote Linie ist jedoch nicht unter meiner Kontrolle und ich kann sie angeben. )-Methode innerhalb gibt 1 oder 0 zurück. Zumindest aus der Perspektive von A ist es dasselbe wie B. Wie auch immer, es wird für mich 0 oder 1 zurückgeben. Das bedeutet, dass C das System A von B und D isoliert und so die Kopplung verringert.

  Dann kann ich mit der Konstruktion des C beginnen, das ich brauche.

 

Das ist C.

Wenn Sie einen Einzeltest machen, nehmen Sie einfach den roten Weg.
<?php
use PHPUnit\Framework\TestCase;

class StubTest extends TestCase
{
    

    public function testStub()
    {
        // 为database类建立桩件。
        $stub = $this->getMockBuilder("database")//类名
                             ->setMethods(array(&#39;find&#39;)) //可以是多个方法
                              ->getMock();

        // 配置桩件。
        $stub->method(&#39;find&#39;)//想要设置返回值的方法
             ->willReturn(0);//设置返回值 

        // 现在调用 $stub->select() 将返回 &#39;裙子&#39;。
        $this->assertEquals(&#39;裙子&#39;, $stub->find());
    }
}
?>
Nach dem Login kopieren

alle

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage