TaskTest

zan框架基于协程构建,具备异步无阻塞等特性,在测试用例上,zan框架提供了统一的基类TaskTest。

使用示例

编写测试用例只需要继承TaskTest,提供对应的task method即可轻松实现任务调度。

class YieldTaskTest extends TaskTest {
    private function simpleFunction()
    {
        return;
    }

    private function generator()
    {
        yield 3;
    }

    public function taskYield()
    {
        $a = (yield $this->simpleFunction());
        $this->assertEquals(NULL, $a, 'Yield simpleFunction return value test failed');

        $a = (yield $this->generator());
        $this->assertEquals(3, $a, 'Yield Generator test failed');
    }

}
  • 测试方法命名规则为task+name,测试方法为协程。
  • 当有多个task异步操作时,调度表现为多IO并发形式,故存在依赖关系的task需写入一个task中。

测试方法

zan框架基于phpunit构建协程的统一测试用例,phpunit的使用方法详细参见https://phpunit.de/

针对单个测试文件,测试命令为:

phpunit –bootstrap zan/test/bootstrap.php [test.php]

如果需要运行zan框架全部的测试用例,需要搭建测试环境,包括tcp server,redis server,mysql server等。

tcp server和http server测试用例均已经模拟实现,文件位置为zan/test/mockServer。

redis server和mysql server需要用户本地搭建,然后修改zan/test/resource/config/{ENV}/connection下的连接池配置即可。

具体测试步骤为:

一、运行环境准备

1.mysql server

2.redis server

修改test/resource/config/{ENV}/connection下的mysql用户名和密码

二、启动server

除mysql和redis之外的其他server采用mock方式实现,启动方法:

cd zan/mockServer

sh ./go.sh start 启动server

三、执行测试

cd zan

phpunit

四、关闭server

cd zan/mockServer

sh ./go.sh stop 关闭server