ホームページ > バックエンド開発 > PHPチュートリアル > SyliusのアップグレードTDDウェイ:PHPSPECの探索

SyliusのアップグレードTDDウェイ:PHPSPECの探索

Christopher Nolan
リリース: 2025-02-10 11:13:13
オリジナル
557 人が閲覧しました

この記事では、在庫管理を改善するために、テスト駆動型開発(TDD)を使用してSyliusのコア機能を拡張します。 製品リストに色分けされた低ストックインジケーターを追加します。 これはバックエンドの実装になります。 Behatでの視覚テストについては、今後の記事で説明します。 syliusインスタンスが機能していると仮定します。

Upgrading Sylius the TDD Way: Exploring PhpSpec

Syliusは堅牢な在庫管理を提供しますが、強化することができます。現在、管理製品リストには在庫情報がありません。バリアントの詳細は在庫レベルと追跡を示していますが、これを製品リストに追加すると使いやすさが向上します。 また、階層化された警告システム(たとえば、十分な在庫の緑、低在庫の場合は黄色、在庫がない場合は赤)を紹介します。

およびProductVariantモデルProductを拡張します

在庫の可用性情報を追加するには、Syliusのおよびモデルを拡張します。

ProductVariant1。バンドルを作成します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.jsonrunautoload

{
  // ...
  "autoload": {
    "psr-4": {
      // ...
      "AppBundle\": "src/AppBundle"
    }
  }
  // ...
}
ログイン後にコピー

2。 SpecBDDテスト< composer dump-autoload動作主導型の開発にはPHPSPECを使用します。

では、add:

キャッシュをクリアします:

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および

シリアスのカウンターパートを拡張します。次に、Syliusクラスを拡張して新しいインターフェイスを実装する

を作成します。
php bin/phpspec desc AppBundle/Entity/ProductVariant
php bin/phpspec desc AppBundle/Entity/Product
ログイン後にコピー

プロパティをProductInterfaceProductVariantInterfaceに追加します Product.php ProductVariant.php

3。 Syliusクラスをオーバーライドします

$reorderLevel ProductVariant.php

<?php
// src/AppBundle/Entity/ProductVariant.php
// ...
class ProductVariant extends BaseProductVariant implements ProductVariantInterface
{
    const REORDER_LEVEL = 5;
    private $reorderLevel;
    // ...
}
ログイン後にコピー
で拡張クラスを使用するようにSyliusを構成します

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 --forceProductVariant.orm.yml

ProductVariantおよびProductのphpspecテストを書き込み、getReorderLevel()setReorderLevel()isReorderable()getOnHand()isTracked()などのメソッドを実装して、必要に応じて、すべてのテストが合格するようにします。 テストでは、さまざまな在庫レベルや再注文レベルなど、さまざまなシナリオをカバーする必要があります。 必要な方法でインターフェイスを更新することを忘れないでください

6。結論 このTDDアプローチにより、堅牢なコードが保証されます。 次の記事では、視覚的検証のためにBehatテストについて説明します。

Upgrading Sylius the TDD Way: Exploring PhpSpec

Upgrading Sylius the TDD Way: Exploring PhpSpec

Upgrading Sylius the TDD Way: Exploring PhpSpec (Core Codeの例とはほとんど関係のないものであり、応答長が大幅に増加するため、BrevityのためにFAQSセクションが省略されています。 >

以上がSyliusのアップグレードTDDウェイ:PHPSPECの探索の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート