Heim >类库下载 >PHP类库 >Erste Einführung in die Rückgabedaten der PHPunit-Stub-Simulation

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

高洛峰
高洛峰Original
2016-10-09 11:12:161290Durchsuche

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 "裤子";
                }
            }
        }

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());
    }
}
?>

alle

Stellungnahme:
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

In Verbindung stehende Artikel

Mehr sehen