Inhaltsverzeichnis
2. Verwenden Sie Laravels eingebaute Fassadenfackeln und Mocks
Beispiel: Fälsche die Postfassade
3.. Verspottete einen im Container gebundenen Dienst
4. Verwenden Sie Http::fake() für externe HTTP -Anrufe
5. Partielle Mocks - nur bestimmte spezifische Methoden verspotten
6. Mocks nach Tests aufräumen
Schlüsseltipps
Heim PHP-Framework Laravel Wie verspottete ich Objekte in Laravel -Tests?

Wie verspottete ich Objekte in Laravel -Tests?

Jul 27, 2025 am 03:13 AM
laravel Unit -Tests

Verwenden Sie Spott für benutzerdefinierte Abhängigkeiten, indem Sie die Erwartungen mit SOFTRECEIVE () festlegen. 2. Verwenden Sie die Fake () -Methode von Laravel für Fassaden wie Mail, Warteschlange und HTTP, um reale Interaktionen zu verhindern. 3.. Ersetzen Sie Container-gebundene Dienste durch $ this-> mock () für die sauberere Syntax. 4. Verwenden Sie http :: fake () mit URL -Mustern, um externe API -Antworten zu simulieren. 5. Wenden Sie partielle Mocke mit make -partial () auf, um nur bestimmte Methoden zu verspotten. 6. Mocks mit Spott :: Close () aufräumen, obwohl die Basistestklasse von Laravel dies normalerweise umgeht. Bevorzugen Sie Fälschungen für Laravel -Komponenten und Mocks für benutzerdefinierte Dienste, um sicherzustellen, dass die Tests schnell, zuverlässig und isoliert bleiben.

Wie verspottete ich Objekte in Laravel -Tests?

Das Verspotten von Objekten in Laravel -Tests ist eine gängige Praxis, um Ihren Code zu isolieren und Nebenwirkungen zu vermeiden - wie Datenbankaufrufe, externe API -Anforderungen oder in der Warteschlange. Laravel bietet dank seiner Integration in Phpunit und der leistungsstarken Mockery verschiedene Möglichkeiten, Objekte zu verspotten.

Wie verspottete ich Objekte in Laravel -Tests?

Hier erfahren Sie, wie Sie Objekte in Laravel -Tests effektiv verspotteten:


1. Mockery für Verspottung Abhängigkeiten

Laravel enthält standardmäßig Spott, sodass Sie problemlos Schein von Klassen oder Schnittstellen erstellen können.

Wie verspottete ich Objekte in Laravel -Tests?
 Verwenden Sie Spott;
Verwenden Sie Illuminate \ Support \ facades \ http;

public function test_external_api_is_called ()
{
    $ mock = mockery :: mock ('app \ services \ paymentGateway');
    $ mock-> sollteReceive ('Charge')-> einmal ()-> andrisewn (true);

    $ this-> ide (paymentgateway :: class, $ mock);

    // Führen Sie jetzt Ihre Testlogik aus
    $ response = $ this-> post ('/pay');
    $ response-> assertok ();
}

? Die Methode shouldReceive() setzt die Erwartungen, wie das Mock verwendet werden soll.


2. Verwenden Sie Laravels eingebaute Fassadenfackeln und Mocks

Verwenden Sie für Laravel -Fassaden (wie Mail , Queue , Cache , Http usw.) fake() oder spy() .

Wie verspottete ich Objekte in Laravel -Tests?

Beispiel: Fälsche die Postfassade

 Verwenden Sie Illuminate \ Support \ Fassades \ Mail;

public function test_user_registration_sends_email ()
{
    Mail :: fake ();

    // Aktion durchführen
    $ this-> post ('/register', [
        'Name' => 'John Doe',
        'E -Mail' => 'John@example.com',
        'Passwort' => 'Geheimnis'
    ]);

    // Die Assert -Nachricht wurde gesendet
    Mail :: AssertSent (WelcomeMail :: Klasse, Funktion ($ mail) {
        return $ mail-> Hasto ('john@example.com ');
    });
}
  • Verwenden Sie Mail::fake() um zu verhindern, dass echte E -Mails gesendet werden.
  • Verwenden Sie assertSent() oder assertNotSent() um das Verhalten zu überprüfen.

✅ Gleiches Muster funktioniert für: Queue::fake() , Cache::fake() , Notification::fake() , Http::fake() .


3.. Verspottete einen im Container gebundenen Dienst

Wenn Sie die Abhängigkeitsinjektion verwenden und einen Dienst im Container ersetzen möchten:

 $ this-> ide (someservice :: class, verspottlich :: mock (someservice :: class, function ($ mock) {
    $ mock-> sollteReceive ('prozess')-> einmal ()-> andReturn ('verspottetes Ergebnis');
}));

Oder sauberer:

 $ this-> mock (someservice :: class, function ($ mock) {
    $ mock-> sollteReceive ('prozess')-> andrisewn ('verspottetes Ergebnis');
});

? ->mock() ist eine Laravel-Helfer-Methode, die Mockery::mock() und app()->instance() kombiniert.


4. Verwenden Sie Http::fake() für externe HTTP -Anrufe

Vermeiden Sie es, beim Testen echte APIs aufzurufen:

 Http :: fake ([
    'api.github.com/*' => http :: response (['name' => 'laravel'], 200),
]);

// Jetzt den tatsächlichen Anruf tätigen
$ response = http :: get ('https://api.github.com/orgs/laravel');

// Anfrage wurde gesendet
Http :: AssertSent (Funktion ($ request) {
    Rückgabe $ request-> url () === 'https://api.github.com/orgs/laravel';
});

Sie können auch Http::fake()->preventStrayRequests() verwenden, um sicherzustellen, dass nur erwartete URLs getroffen werden.


5. Partielle Mocks - nur bestimmte spezifische Methoden verspotten

Manchmal möchten Sie nur eine Methode einer Klasse verspotten und andere real halten.

 $ Service = Mockery :: Mock (MyService :: Klasse)
    -> makePartial ()
    -> SollteRece ('externalcall')
    -> andreturn ('Dummy')
    -> getMock ();

$ this-> ide (myService :: class, $ service);

Jetzt ist nur externalCall() verspottet; Andere Methoden laufen normal.


6. Mocks nach Tests aufräumen

Reinigen Sie immer Ihre Mocks, um die Testverschmutzung zu vermeiden:

 geschützte Funktion remeddown (): void
{
    Spott :: Close ();
    Elternteil :: Teardown ();
}

✅ Laravels Basistestklassen (wie TestCase ) verarbeiten dies normalerweise bereits.


Schlüsseltipps

  • Bevorzugen Sie Fälschungen ( Mail::fake() , Queue::fake() ) über volle Mocks, wenn verfügbar-sie sind einfacher und laravelspezifisch.
  • Verwenden Sie Mocks , wenn Sie eine feinkörnige Kontrolle über Rückgabewerte oder -verhalten benötigen.
  • Vermeiden Sie über Gespenst-nur noch verspotten, was Sie isolieren müssen.
  • Verwenden Sie spy() um tatsächliche Anrufe zu beobachten, ohne sich zu stören:
     $ this-> Spy (SomeService :: Klasse);
    // Später:
    $ this-> sollteavereceind (someservice :: class, 'methode');

    Grundsätzlich macht Laravel das Verspotten sauber und ausdrucksstark. Verwenden Sie Fälschungen für Laravel -Komponenten und Spott für benutzerdefinierte Dienste. Es hält Ihre Tests schnell, zuverlässig und unabhängig von externen Systemen.

    Das obige ist der detaillierte Inhalt vonWie verspottete ich Objekte in Laravel -Tests?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHP-Tutorial
1510
276
Wie implementieren Sie ein Überweisungssystem in Laravel? Wie implementieren Sie ein Überweisungssystem in Laravel? Aug 02, 2025 am 06:55 AM

Erstellen Sie Referenzen Tabelle, um Empfehlungsbeziehungen zu erfassen, einschließlich Empfehlungen, Empfehlungen, Empfehlungscodes und Nutzungszeit; 2. Definieren Sie die Beziehungen zwischen Hörern und Hasmany im Benutzermodell, um Empfehlungsdaten zu verwalten. 3. Erstellen Sie bei der Registrierung einen eindeutigen Empfehlungscode (kann durch Modellereignisse implementiert werden). 4. Erfassen Sie den Empfehlungscode, indem Sie die Parameter während der Registrierung abfragen, nach Überprüfung eine Empfehlungsbeziehung aufstellen und die Selbstverantwortung verhindern. 5. den Belohnungsmechanismus auslösen, wenn empfohlene Benutzer das angegebene Verhalten (Abonnementauftrag) abschließen; 6. Generieren Sie gemeinsame Empfehlungsverbindungen und verwenden Sie URLs mit Laravel Signature, um die Sicherheit zu verbessern. 7. Empfehlungsstatistiken auf dem Dashboard anzeigen, z. B. die Gesamtzahl der Empfehlungen und konvertierten Zahlen; Es ist notwendig, sicherzustellen, dass Datenbankbeschränkungen, Sitzungen oder Cookies bestehen bleiben.

Wie implementieren Sie Feature -Flags in einer Laravel -App? Wie implementieren Sie Feature -Flags in einer Laravel -App? Jul 30, 2025 am 01:45 AM

ChooseseafatureFlagstrategyuchasconfig-basierte, datenbankgetriebene, orthird-partytools-ähnliche Flagsmith

Wie baue ich eine REST -API mit Laravel? Wie baue ich eine REST -API mit Laravel? Jul 30, 2025 am 03:41 AM

Erstellen Sie ein neues Laravel -Projekt und starten Sie den Service. 2. Generieren Sie das Modell, die Migration und den Controller und führen Sie die Migration aus; 3. Definieren Sie die erholsame Route in Routen/api.php; V. 5. Verwenden Sie Postbote oder Curl, um die API -Funktion zu testen. 6. Fügen Sie optional die API -Authentifizierung durch Heiligtum hinzu; Erhalten Sie schließlich eine klare Struktur, vollständig und erweiterbar Laravelrestapi, geeignet für praktische Anwendungen.

Was sind Repository -Verträge in Laravel? Was sind Repository -Verträge in Laravel? Aug 03, 2025 am 12:10 AM

Das Repository -Muster ist ein Entwurfsmuster, mit dem die Geschäftslogik aus der Datenzugriffslogik entkoppelt wird. 1. Es definiert Datenzugriffsmethoden über Schnittstellen (Vertrag); 2. Die spezifischen Vorgänge werden von der Repository -Klasse implementiert. 3. Die Controller verwendet die Schnittstelle durch Abhängigkeitsinjektion und kontaktiert nicht direkt die Datenquelle. 4. Vorteile sind ordentlicher Code, starke Testbarkeit, einfache Wartung und Teamzusammenarbeit; 5. Für mittlere und große Projekte können kleine Projekte das Modell direkt verwenden.

Was ist eloquentes Orm in Laravel? Was ist eloquentes Orm in Laravel? Jul 29, 2025 am 03:50 AM

Eloquentorm ist das integrierte Relational Mapping-System von Laravel. Sie betreibt die Datenbank über PHP -Syntax anstelle von nativem SQL, wodurch der Code prägnanter und leicht zu warten ist. 1. Jede Datentabelle entspricht einer Modellklasse, und jeder Datensatz existiert als Modellinstanz. 2. Übernehmen Sie den aktiven Datensatzmodus, und die Modellinstanz kann selbst gespeichert oder aktualisiert werden. 3.. Support -Stapelzuweisung und das $ fillbare Attribut müssen im Modell definiert werden, um die Sicherheit zu gewährleisten. 4. Bieten Sie eine starke Beziehungsunterstützung wie eins zu eins, eins zu viele, viele zu viele usw., und Sie können über Methodenaufrufe auf die zugehörigen Daten zugreifen. 5. Integrierter Abfragekonstruktor, wo OrderBy und andere Methoden als Ketten bezeichnet werden können, um Abfragen zu erstellen; 6. Unterstützen Sie Zubehör und Modifikatoren, die die Nummer beim Erhalten oder Einlegen von Attributen formatieren können.

So debuggen Sie Unit -Tests in VSCODE aus So debuggen Sie Unit -Tests in VSCODE aus Aug 01, 2025 am 06:12 AM

CreateModifyLaunch.jsonInvScodeByopeningTherunandDebugView, SelectingYourEnvironment (z. B. Python, Node.js) und Konfigurationsfo ryourtestframework (z. B. PyTest, Scherz) .2.setbreakpointSinyourTestFile, SelectTheDeBugConfiguration und Startdebuggingwithf5topaus

Verwendung von Formularanfragen zur Validierung in Laravel. Verwendung von Formularanfragen zur Validierung in Laravel. Jul 30, 2025 am 05:04 AM

Verwenden Sie FormRequests, um eine komplexe Formüberprüfungslogik aus dem Controller zu extrahieren, wodurch die Wartbarkeit und Wiederverwendbarkeit von Code verbessert wird. 1. Erstellungsmethode: Generieren Sie die Anforderungsklasse über den Handwerksbefehl. Machen Sie: Anfrage; 2. Definitionsregeln: Festungsüberprüfungslogik in der Regeln () -Methode festlegen; A. Controller -Verwendung: Empfangen Sie Anfragen mit dieser Klasse direkt als Parameter, und Laravel überprüfen automatisch. 4. Beurteilung des Autorisierungsurteils: Benutzerberechtigungen durch die Autorize () -Methode kontrollieren; 5. Dynamische Anpassungsregeln: Dynamisch unterschiedliche Überprüfungsregeln gemäß dem Anforderungsinhalt zurückgeben.

Wie benutze ich Zubehör und Mutatoren in eloquent in Laravel? Wie benutze ich Zubehör und Mutatoren in eloquent in Laravel? Aug 02, 2025 am 08:32 AM

AccessorsandMutatorsinlaravel'seloquentorMaloutOrmatorMipulatemodelattributesWenRetriesingingingValues.1

See all articles