ホームページ  >  記事  >  バックエンド開発  >  【callable-fake】呼び出し可能な関数を偽装してテストを高速化します

【callable-fake】呼び出し可能な関数を偽装してテストを高速化します

藏色散人
藏色散人転載
2020-05-19 13:33:211845ブラウズ

Callable fake は、Tim Macdonald による PHP テスト ユーティリティで、「呼び出し可能オブジェクト/クロージャへの呼び出しを偽装、キャプチャ、およびアサートできる」ものです。場合によっては、このパッケージは開発者がテストで呼び出し可能オブジェクトを渡すことを可能にするのに役立ちます。

これには、以下に示すように、Laravel フィクションからインスピレーションを得た API があります:

// Before, you might collect callables to assert later...
public function testEachLoopsOverAllDependencies(): void
{
    // arrange
    $received = [];
    $expected = factory(Dependency::class)->times(2)->create();
    $repo = $this->app[DependencyRepository::class];
    // act
    $repo->each(function (Dependency $dependency) use (&$received): void {
        $received[] = $dependency;
    });
    // assert
    $this->assertCount(2, $received);
    $this->assertTrue($expected[0]->is($received[0]));
    $this->assertTrue($expected[1]->is($received[1]));
}

このパッケージを使用すると、次のようなものが使用できます:

public function testEachLoopsOverAllDependencies(): void
{
    // arrange
    $callable = new CallableFake();
    $expected = factory(Dependency::class)->times(2)->create();
    $repo = $this->app[DependencyRepository::class];
    // act
    $repo->each($callable);
    // assert
    $callable->assertTimesInvoked(2);
    $callable->assertCalled(function (Depedency $dependency) use ($expected): bool {
        return $dependency->is($expected[0]);
    });
    $callable->assertCalled(function (Dependency $dependency) use ($expected): bool {
        return $dependency->is($expected[1]);
    });
}

パッケージのアサーション (assertCalled、assertNotCalled、 assertInvokedなどが用意されています。詳細と例については、プロジェクトの Readme の 利用可能なアサーションの完全なリスト を必ず確認してください。

このパッケージの詳細については、GitHub で確認し、完全なインストール手順を入手し、timacdonald/callable-fake でソース コードを参照してください。

以上が【callable-fake】呼び出し可能な関数を偽装してテストを高速化しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。