ホームページ  >  記事  >  バックエンド開発  >  PHP 単体テスト: テストにおける依存関係注入の役割

PHP 単体テスト: テストにおける依存関係注入の役割

PHPz
PHPzオリジナル
2024-06-03 18:40:00789ブラウズ

単体テストでは、依存関係注入 (DI) を使用して依存関係を分離し、それによってテストの保守性と再利用性を高めます。 DI を使用すると、依存関係の動作をモックまたはスタブアウトして、特定の依存関係の組み合わせに対して TUC をテストし、さまざまな状況下で期待どおりに動作することを確認できます。 DI を使用すると、TUC を分離し、その動作を独立してテストできるため、テストの回復力と保守性が向上します。

PHP 単体テスト: テストにおける依存関係注入の役割

PHP 単体テスト: テストにおける依存関係注入の役割

単体テストでは、依存関係注入 (DI) は、保守可能で再利用可能なテストの作成に役立つ強力な手法です。 DI を使用すると、依存関係をテスト対象クラス (TUC) から切り離すことで、依存関係の動作を簡単にモックまたはスタブできるようになり、テストの実行をより詳細に制御できるようになります。

依存性注入の役割

DI の主な利点の 1 つは、TUC を分離できるため、その動作を独立してテストできることです。 DI を使用すると、特定の依存関係をモックまたはスタブ化し、他の依存関係を変更しないテスト シナリオを作成できます。このようにして、依存関係の特定の組み合わせに対して TUC をテストし、さまざまな状況下で期待どおりに動作することを確認できます。

PHP での DI の実装

PHP では多くの DI コンテナが利用可能です。最も人気のあるオプションの 1 つは Pimple です:

use Pimple\Container;

$container = new Container();
$container['dependency'] = function () {
    return new Dependency();
};

実践的な例

次の PHP クラスを考えてみましょう:

class MyClass
{
    private $dependency;

    public function __construct(Dependency $dependency)
    {
        $this->dependency = $dependency;
    }

    public function doSomething()
    {
        // 使用 $this->dependency
    }
}

DI を使用して MyClass を単体テストするには、次の手順を実行できます: MyClass 进行单元测试,你可以执行以下步骤:

  1. 创建 DI 容器并注册依赖项:
use Pimple\Container;

$container = new Container();
$container['dependency'] = function () {
    return new Dependency();
};
  1. 使用 DI 容器实例化 TUC:
$myClass = $container->make('MyClass');
  1. 模拟或存根依赖项:
$mockDependency = $this->getMockBuilder(Dependency::class)
    ->disableOriginalConstructor()
    ->getMock();

$container['dependency'] = $mockDependency;
  1. 运行测试:
$this->assertEquals('Expected result', $myClass->doSomething());

通过使用 DI,你可以隔离 MyClass

  • DI コンテナを作成して依存関係を登録する: 🎜
  • rrreee
    1. 🎜DI コンテナを使用して TUC をインスタンス化する: 🎜
    2. /ol >rrreee
      1. 🎜モックまたはスタブの依存関係: 🎜
      rrreee
      1. 🎜 テストの実行: 🎜 li>rrreee🎜 DI を使用すると、MyClass を分離し、依存関係の特定の組み合わせに対してテストできます。このアプローチにより、他のテストに影響を与えることなく依存関係の動作を変更できるため、テストの回復力と保守性が向上します。 🎜

    以上がPHP 単体テスト: テストにおける依存関係注入の役割の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。