Heim >Backend-Entwicklung >PHP-Tutorial >Upgrade von Sylius the TDD Way: Behand erforschen

Upgrade von Sylius the TDD Way: Behand erforschen

Joseph Gordon-Levitt
Joseph Gordon-LevittOriginal
2025-02-10 09:21:09555Durchsuche

Sylius mit StoryBDD erweitern: Verbesserung des Produktinventarmanagements

In diesem Artikel wird das Bestandsverfolgung zu Sylius hinzufügen und sich auf StoryBDD -Tests mit Behat konzentrieren. Wir haben zuvor Backend -Funktionen hinzugefügt. Jetzt integrieren wir diese in die Benutzeroberfläche.

Upgrading Sylius the TDD Way: Exploring Behat

unser Ziel: Zeigen Sie in der Produktliste eine neue "Inventar" -Spalte an, in der die Gesamtbestand aller verfolgten Varianten angezeigt wird.

Upgrading Sylius the TDD Way: Exploring Behat

Schlüsselkonzepte:

  • storysbdd (verhaltensbetriebene Entwicklung): Verwenden von Behat zum Testen von Benutzergeschichten, um eine genaue Implementierung von Funktionen wie Inventory Management zu gewährleisten.
  • benutzerdefinierte Behat -Kontexte: Erstellen und Konfigurieren benutzerdefinierter Kontextklassen in Sylius, um bestimmte Testszenarien zu verarbeiten.
  • Datenbankintegration: Datenbankschema -Updates und potenzielle Verbindungsfehler adressieren.
  • UI -Updates: Gitter und Vorlagen ändern, um Bestandsdaten korrekt im Sylius -Administratorfeld anzuzeigen.

Implementierung von StoryBDD -Tests mit Behat:

Wir erstellen eine Behat -Feature -Datei (features/product/managing_products/browsing_products_with_inventory.feature):

<code class="language-gherkin">@managing_inventory
Feature: Browsing products with inventory
    In order to manage my shop merchandise
    As an Administrator
    I want to be able to browse products

    Background:
        Given the store operates on a single channel in "United States"
        And the store has a product "Kubus"
        And it comes in the following variations:
            | name          | price     |
            | Kubus Banana  | .00     |
            | Kubus Carrot  | .00     |
        And there are 3 units of "Kubus Banana" variant of product "Kubus" available in the inventory
        And there are 5 units of "Kubus Carrot" variant of product "Kubus" available in the inventory
        And I am logged in as an administrator

    @ui
    Scenario: Browsing defined products with inventory
        Given the "Kubus Banana" product variant is tracked by the inventory
        And the "Kubus Carrot" product variant is tracked by the inventory
        When I want to browse products
        Then I should see that the product "Kubus" has 8 on hand quantity</code>

Ausführen Dies zeigt fehlende Schritte. Wir erstellen einen benutzerdefinierten Kontext (src/Sylius/Behat/Context/Ui/Admin/ManagingProductsInventoryContext.php):

<code class="language-php"><?php
// ... (imports) ...

class ManagingProductsInventoryContext implements Context
{
    // ... (IndexPageInterface injection and methods) ...
}</code>

Wir konfigurieren diesen Kontext in src/Sylius/Behat/Resources/config/services/contexts/ui.xml und src/Sylius/Behat/Resources/config/suites/ui/inventory/managing_inventory.yml. Datenbank -Setup (doctrine:database:create, doctrine:schema:create, doctrine:schema:update) könnte erforderlich sein.

Implementieren der fehlenden Schritte beinhalten die Verwendung von Sylius IndexPageInterface, um mit der Produktliste und den Behauptungen zu interagieren, um das Vorhandensein und die Daten der Inventarspalte zu überprüfen. Wir müssen auch die Sylius Grid-Konfiguration (app/Resources/SyliusAdminBundle/config/grids/product.yml) aktualisieren, um die Spalte "Inventar" hinzuzufügen und eine benutzerdefinierte Vorlage (app/Resources/SyliusAdminBundle/views/ProductVariant/Grid/Field/inventory.html.twig) zu erstellen Aktien, rot für außer Lager).

Schließlich erweitern wir das Produktvariantenformular, um die Änderung der Neuordnungspegel zu ermöglichen. Dies beinhaltet das Erstellen einer Formulierung (src/AppBundle/Form/Type/Extension/ProductVariantTypeExtension.php), das Konfigurieren von Dienst (src/AppBundle/Resources/config/services.yml) und das Aktualisieren der relevanten Vorlage (app/Resources/SyliusAdminBundle/views/ProductVariant/Tab/_details.html.twig).

.

Upgrading Sylius the TDD Way: Exploring Behat

Schlussfolgerung:

Dieser Prozess zeigt einen robusten Ansatz, um Sylius zu erweitern und gleichzeitig eine hohe Testabdeckung beizubehalten. Die Verwendung von StoryBDD- und benutzerdefinierten Behat -Kontexten stellt sicher, dass neue Funktionen gründlich getestet und nahtlos in die vorhandene Plattform integriert werden. Denken Sie daran, Caches nach Änderungen an Konfigurationsdateien zu löschen.

(häufig gestellte Fragen der Kürze weggelassen, da er weitgehend nicht mit dem Kerncode und den beschriebenen Modifikationen zu tun hat.)

Das obige ist der detaillierte Inhalt vonUpgrade von Sylius the TDD Way: Behand erforschen. 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