wyrihaximus/async-test-utilities

api-clients 包的测试工具

支持包维护!
WyriHaximus

安装次数: 540 684

依赖项: 107

建议者: 0

安全性: 0

星标: 4

关注者: 3

分支: 0

开放问题: 4

语言:Makefile


README

Continuous Integration Latest Stable Version Total Downloads Code Coverage Type Coverage License

安装

通过 Composer 安装,使用以下命令,它将自动检测最新版本并将其与 ^ 绑定。

composer require wyrihaximus/async-test-utilities

使用方法

任何测试文件都可以扩展 WyriHaximus\AsyncTestUtilities\TestCase,并提供一些有用的功能,如用于文件存储相关测试的随机命名空间和随机目录。

由于所有测试都在纤维内部执行,因此默认超时时间为 30 秒。要降低或提高此超时,该包提供 TimeOut 属性。它可以在类和方法级别设置。当在方法级别设置时,它优先于类级别。

<?php

declare(strict_types=1);

namespace WyriHaximus\Tests\AsyncTestUtilities;

use React\EventLoop\Loop;
use WyriHaximus\AsyncTestUtilities\AsyncTestCase;
use WyriHaximus\AsyncTestUtilities\TimeOut;

use function React\Async\async;
use function React\Async\await;
use function React\Promise\resolve;
use function React\Promise\Timer\sleep;
use function time;

#[TimeOut(0.3)]
final class AsyncTestCaseTest extends AsyncTestCase
{
    #[TimeOut(1)]
    public function testAllTestsAreRanInAFiber(): void
    {
        self::expectOutputString('ab');

        Loop::futureTick(async(static function (): void {
            echo 'a';
        }));

        await(sleep(1));

        echo 'b';
    }

    public function testExpectCallableExactly(): void
    {
        $callable = $this->expectCallableExactly(3);

        Loop::futureTick($callable);
        Loop::futureTick($callable);
        Loop::futureTick($callable);
    }

    public function testExpectCallableOnce(): void
    {
        Loop::futureTick($this->expectCallableOnce());
    }
}

许可证

MIT 许可证 (MIT)

版权所有 (c) 2023 Cees-Jan Kiewiet

特此授予任何获得此软件及其相关文档副本(“软件”)的人免费使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向提供软件的人授予这样做,前提是以下条件

上述版权声明和本许可声明应包含在软件的任何副本或主要部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论是在合同、侵权或其他行为中产生的,无论是由于软件或其使用或其他方式。