Heim >Backend-Entwicklung >PHP-Tutorial >Upgrade von Sylius the TDD Way: Behand erforschen
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.
unser Ziel: Zeigen Sie in der Produktliste eine neue "Inventar" -Spalte an, in der die Gesamtbestand aller verfolgten Varianten angezeigt wird.
Schlüsselkonzepte:
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
).
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!