この記事では、在庫管理を改善するために、テスト駆動型開発(TDD)を使用してSyliusのコア機能を拡張します。 製品リストに色分けされた低ストックインジケーターを追加します。 これはバックエンドの実装になります。 Behatでの視覚テストについては、今後の記事で説明します。 syliusインスタンスが機能していると仮定します。
Syliusは堅牢な在庫管理を提供しますが、強化することができます。現在、管理製品リストには在庫情報がありません。バリアントの詳細は在庫レベルと追跡を示していますが、これを製品リストに追加すると使いやすさが向上します。 また、階層化された警告システム(たとえば、十分な在庫の緑、低在庫の場合は黄色、在庫がない場合は赤)を紹介します。
およびProductVariant
モデルProduct
を拡張します
ProductVariant
1。バンドルを作成しますProduct
create:
src/AppBundle/AppBundle.php
:
<?php namespace AppBundle; use Symfony\Component\HttpKernel\Bundle\Bundle; class AppBundle extends Bundle { }
updateapp/AppKernel.php
's
<?php // ... public function registerBundles() { $bundles = [ // ... new AppBundle\AppBundle(), ]; }
composer.json
runautoload
。
{ // ... "autoload": { "psr-4": { // ... "AppBundle\": "src/AppBundle" } } // ... }
2。 SpecBDDテスト<
composer dump-autoload
動作主導型の開発にはPHPSPECを使用します。
キャッシュをクリアします:
。
phpspec.yml.dist
:
AppBundle: { namespace: AppBundle\Entity, psr4_prefix: AppBundle\Entity, spec_path: src/AppBundle/Entity, src_path: src/AppBundle/Entity }
インターフェイスの作成:php bin/console cache:clear
および
と
を作成します。php bin/phpspec desc AppBundle/Entity/ProductVariant php bin/phpspec desc AppBundle/Entity/Product
プロパティをProductInterface
:ProductVariantInterface
に追加します
Product.php
ProductVariant.php
$reorderLevel
ProductVariant.php
<?php // src/AppBundle/Entity/ProductVariant.php // ... class ProductVariant extends BaseProductVariant implements ProductVariantInterface { const REORDER_LEVEL = 5; private $reorderLevel; // ... }
4。データベースの更新
app/config/config.yml
移動を生成して実行する:
sylius_product: resources: product: classes: model: AppBundle\Entity\Product product_variant: classes: model: AppBundle\Entity\ProductVariant
(または必要に応じてを使用)。 データベースの列を定義するには、
を作成します。テーブルを変更していないため、空の
を作成します。php bin/console doctrine:migrations:diff php bin/console doctrine:migrations:migrate
5。その他のSPECBDDテストphp bin/console doctrine:schema:update --force
ProductVariant.orm.yml
ProductVariant
およびProduct
のphpspecテストを書き込み、getReorderLevel()
、setReorderLevel()
、isReorderable()
、getOnHand()
、isTracked()
などのメソッドを実装して、必要に応じて、すべてのテストが合格するようにします。 テストでは、さまざまな在庫レベルや再注文レベルなど、さまざまなシナリオをカバーする必要があります。 必要な方法でインターフェイスを更新することを忘れないでください
6。結論 このTDDアプローチにより、堅牢なコードが保証されます。 次の記事では、視覚的検証のためにBehatテストについて説明します。
(Core Codeの例とはほとんど関係のないものであり、応答長が大幅に増加するため、BrevityのためにFAQSセクションが省略されています。 >
以上がSyliusのアップグレードTDDウェイ:PHPSPECの探索の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。