Heim  >  Artikel  >  PHP-Framework  >  Laravel-Entwicklung: Wie nutzt man Laravel Testing für effiziente Unit-Tests?

Laravel-Entwicklung: Wie nutzt man Laravel Testing für effiziente Unit-Tests?

WBOY
WBOYOriginal
2023-06-14 08:38:421651Durchsuche

Laravel-Entwicklung: Wie nutzt man Laravel Testing für effiziente Unit-Tests?

Laravel ist ein führendes Framework für die PHP-Entwicklung. Es wird von den meisten PHP-Entwicklern aufgrund seiner einfachen Erlernbarkeit, Benutzerfreundlichkeit und umfassenden Funktionen geliebt. Während des Entwicklungsprozesses sind Tests von entscheidender Bedeutung, da gute Tests die Qualität und Stabilität der Anwendung verbessern.

Das Laravel-Framework verfügt über ein integriertes Laravel-Testtool, das Entwicklern helfen kann, schnell effiziente Unit-Tests zu schreiben. In diesem Artikel wird erläutert, wie Sie Laravel Testing für effiziente Unit-Tests verwenden.

Warum Unit-Tests?

Im Entwicklungsprozess ist Unit-Test ein sehr wichtiges Glied. Sie können Entwicklern helfen:

  • Codequalität sicherstellen: Tests können Codefehler und -probleme erkennen, sodass Entwickler Probleme zeitnah lösen und die Codequalität sicherstellen können.
  • Codeabdeckung verbessern: Tests können Entwicklern helfen, die Codeabdeckung zu verbessern, um sicherzustellen, dass Tests alle Aspekte der Anwendung abdecken.
  • Codeverhalten bestätigen: Durch Tests können Entwickler das Verhalten des Codes bestätigen und sicherstellen, dass die Codelogik korrekt ist.

Der Einsatz von Unit-Tests kann das Risiko von Problemen bei der Codeentwicklung erheblich reduzieren und die Qualität und Stabilität des Codes verbessern.

Vorteile der Verwendung von Laravel Testing für Unit-Tests

Um Unit-Tests durchzuführen, müssen Entwickler ein Test-Framework verwenden, um den normalen Betrieb von Testfällen sicherzustellen und Probleme und Fehler schnell zu erkennen. Laravel Testing ist ein sehr beliebtes Test-Framework im Laravel-Framework. Das Framework bietet folgende Vorteile:

  • Einfach zu verwenden: Laravel Testing verfügt über eine einfache und intuitive API-Schnittstelle, die es Entwicklern ermöglicht, Testfälle schnell zu schreiben und auszuführen.
  • Integriertes Laravel-Framework: Laravel Testing ist in das im Laravel-Framework integrierte Test-Framework integriert, sodass Entwickler dessen leistungsstarke Funktionen nutzen können. Es nutzt die Kernmethoden des Laravel-Frameworks, um sie interaktiv zu gestalten.
  • Weit verbreitet: Laravel ist ein weit verbreitetes Framework mit einer großen Benutzerbasis und Community, das viele wertvolle Ressourcen wie Dokumentation und Informationen bereitstellt.

Grundstruktur von Laravel Testing

Bevor Sie Testfälle schreiben, müssen Sie die Grundstruktur von Laravel Testing verstehen. Laravel-Testfälle sind wie andere Laravel-Komponenten ebenfalls eine Klasse. Diese Klasse sollte die Klasse PHPUnitFrameworkTestCase erben und Zugriff auf verschiedene Dienste im Laravel-Framework haben. Wenn Sie beispielsweise während des Tests auf Konsolenbefehle zugreifen müssen, können Sie die Artisan::call-Methode verwenden.

Die Grundstruktur von Laravel Testing ist wie folgt:

<?php

namespace TestsUnit;

use PHPUnitFrameworkTestCase;

class ExampleTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {
        $this->assertTrue(true);
    }
}

Diese Klasse enthält eine Testfall-Beispielmethode testBasicTest(). Da eine Testmethode als separater Einzeltest behandelt werden sollte, ist es am besten, die Testmethode entsprechend dem Zweck des Tests zu benennen.

Testfälle schreiben

Der Prozess des Schreibens von Testfällen ist normalerweise in die folgenden Schritte unterteilt:

  • Testumgebung vorbereiten: Starten Sie die Laravel-Anwendung und richten Sie die Testumgebung ein.
  • Tests definieren: Der Benutzer definiert einen oder mehrere Tests, um die Richtigkeit der Anwendungslogik sicherzustellen.
  • Führen Sie den Test durch: Führen Sie den Test durch und sammeln Sie die Ergebnisse, klassifizieren Sie sie entsprechend den Ergebnissen und zeichnen Sie die Testergebnisse für einen späteren Vergleich auf.

Tests definieren

Der Prozess der Definition von Testfällen umfasst normalerweise die folgenden Aspekte.

Richten Sie die Testumgebung ein

Bevor Sie mit dem Test beginnen, müssen Sie die Testumgebung einrichten. Legen Sie durch Erstellen einer .env.testing-Datei die darin enthaltenen Testumgebungsvariablen fest. Das Laravel-Framework erkennt diese Datei beim Laden der Anwendung automatisch und verwendet standardmäßig die Einstellungen in dieser Datei.

.env.testing-Beispiel:

APP_NAME=Laravel
APP_ENV=testing
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=sqlite
DB_DATABASE=:memory:

Andere Einstellungen können auch in der .env.testing-Datei hinzugefügt oder geändert werden. Hier verwenden wir die SQLite-Datenbank, eine leichte und einfach zu testende Datenbank-Engine.

Bei Verwendung einer SQLite-Datenbank führt Laravel die Datenmigration automatisch durch, sodass keine manuelle Migration erforderlich ist. Beim Zugriff auf die Datenbank in einer Testmethode verwendet Laravel automatisch Migrationen, die Daten in der Datenbank platzieren. Daher ist es nicht erforderlich, das Schema während des Testlaufs manuell zu definieren.

Schreiben Sie einen einfachen Beispieltest:

tests/Unit/ExampleTest.php

<?php

namespace TestsUnit;

use PHPUnitFrameworkTestCase;

class ExampleTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {
        $this->assertTrue(true);
    }
}

Führen Sie diesen Test in der Konsole aus und verwenden Sie den folgenden Befehl:

phpunit tests/Unit/ExampleTest.php

Nach dem Ausführen dieses Tests werden die Testergebnisse in der Konsole ausgegeben:

PHPUnit 8.5.1 by Sebastian Bergmann and contributors.

.                                                                   1 / 1 (100%)

Time: 00:00.010, Memory: 6.00 MB

OK (1 test, 1 assertion)

Sie können sehen, dass der Test erfolgreich bestanden wurde.

Verwendung der Laravel-Datenbank

Manchmal müssen wir auf die tatsächliche Datenbank zugreifen, die in der Laravel-Anwendung definiert ist. Wenn Sie die DB-Fassade von Laravel in einer Anwendung verwenden, wählt Laravel automatisch die aktuelle Anwendungsumgebung aus.

Tests können durchgeführt werden durch:

$this->assertDatabaseHas('users', [
    'email' => 'test@example.com'
]);

Diese Testmethode testet das Speichern und Abrufen durch den Benutzer. Hier fügen wir eine Assertion hinzu, um mit „asserDatabaseHas()“ zu testen, ob die Daten vorhanden sind.

Wenn Sie Datensätze in die Datenbank einfügen möchten, können Sie die folgende Methode verwenden:

$user = factory(User::class)->create();

$this->assertDatabaseHas('users', [
    'email' => $user->email
]);

Verwendung gefälschter Objekte

Sie können die von Laravel bereitgestellte Mockery-Objektbibliothek verwenden, um Scheinobjekte und transitive Abhängigkeiten zu generieren. Verwenden Sie das Mockery-Mocking-Framework anstelle teurer, hartcodierter Objekte und nutzen Sie diese Mock-Dienste dann zusammen mit anderen Abhängigkeiten, Testobjekten oder größeren Komponenten.

Mockery kann Ihren Code erheblich vereinfachen und dadurch die Qualität und Wartbarkeit Ihrer Anwendung verbessern.

$string = Mockery::mock('IlluminateHttpRequest');
$string->shouldReceive('input')

    ->once()
    ->andReturn('Welcome to Laravel Testing');

$this->assertTrue(strlen($string->input()) === 23);

在上面的代码示例中,我们首先创建了一个伪造对象$string,它是IlluminateHttpRequest的模拟实例。然后我们编写测试用例来测试模拟实例$input方法的返回值。

完成这些步骤后,我们便可以快速编写测试用例,取得高效、可维护、高质量的程序。

总结

直接就知道程序的运行结果是不能保证代码完美运作,甚至有可能出现严重的错误。而单元测试能够较全面地检测应用程序的每个组成部分,从而确保应用程序的质量与稳定性。

在Laravel框架中,Laravel Testing是一种流行的测试框架。Laravel Testing是受欢迎的,因为它易于使用,与Laravel框架深度结合,并且具有广泛的使用情况与应用。

在编写测试用例时,应确保测试方法的名称明确地描述了测试的功能。在测试方法中,使用assert()和其他相关断言操作来测试方法。完成测试后,可以使用PHPUnit来运行测试。

因为Laravel Testing已经在Laravel框架中集成,所以它使得开发人员可以轻松地测试他们的应用程序。Laravel Testing使开发人员能够更自信地修改和更新代码,并确保不会对任何现有功能产生负面影响。

Das obige ist der detaillierte Inhalt vonLaravel-Entwicklung: Wie nutzt man Laravel Testing für effiziente Unit-Tests?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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