{"id":16031648,"url":"https://github.com/razonyang/swoole-unit","last_synced_at":"2025-03-13T02:43:48.168Z","repository":{"id":59583332,"uuid":"537780358","full_name":"razonyang/swoole-unit","owner":"razonyang","description":"The unit test helpers for Swoole","archived":false,"fork":false,"pushed_at":"2022-09-24T08:26:29.000Z","size":13,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-04-14T02:23:39.908Z","etag":null,"topics":["swoole","unit-test","unit-testing"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/razonyang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-09-17T10:57:38.000Z","updated_at":"2023-02-13T12:42:39.000Z","dependencies_parsed_at":"2022-09-19T13:52:22.752Z","dependency_job_id":null,"html_url":"https://github.com/razonyang/swoole-unit","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razonyang%2Fswoole-unit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razonyang%2Fswoole-unit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razonyang%2Fswoole-unit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razonyang%2Fswoole-unit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/razonyang","download_url":"https://codeload.github.com/razonyang/swoole-unit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243330259,"owners_count":20274037,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["swoole","unit-test","unit-testing"],"created_at":"2024-10-08T21:04:27.337Z","updated_at":"2025-03-13T02:43:48.146Z","avatar_url":"https://github.com/razonyang.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Swoole Unit Test Helpers\n\n[![Latest Stable Version](https://poser.pugx.org/razonyang/swoole-unit/v/stable.png)](https://packagist.org/packages/razonyang/swoole-unit)\n[![Total Downloads](https://poser.pugx.org/razonyang/swoole-unit/downloads.png)](https://packagist.org/packages/razonyang/swoole-unit)\n[![Build Status](https://github.com/razonyang/swoole-unit/actions/workflows/build.yml/badge.svg)](https://github.com/razonyang/swoole-unit/actions)\n[![Coverage Status](https://coveralls.io/repos/github/razonyang/swoole-unit/badge.svg?branch=main)](https://coveralls.io/github/razonyang/swoole-unit?branch=main)\n[![StyleCI](https://github.styleci.io/repos/537780358/shield?branch=main)](https://github.styleci.io/repos/537780358?branch=main)\n\n## Installation\n\n```bash\ncomposer require razonyang/swoole-unit --prefer-dist --dev\n```\n\n## Helpers\n\n### Request Builder\n\nThe `RequestBuilder` generates `Swoole\\Http\\Request` instances.\n\n```php\n\u003c?php\n$request = RequestBuilder::get('/')\n    -\u003eprotocol('HTTP/1.1')\n    -\u003ehost('localhost')\n    -\u003econtentType('application/x-www-form-urlencoded')\n    -\u003econtentLength(8)\n    -\u003eheaders([\n        'X-Foo' =\u003e [\n            'Bar',\n        ],\n    ])\n    -\u003ebody('hello=world')\n    -\u003ecreate();\n```\n\nThe `RequestBuilder` supports chaining calls until `create`.\n\n#### Form Data\n\n```php\n$data = [\n    'hello' =\u003e 'world',\n];\n$request = RequestBuilder::post('/users')\n    -\u003eformData($data)\n    -\u003ecreate()\n```\n\n#### Multipart Form Data\n\n```php\n$data = [\n    'hello' =\u003e 'world',\n];\n$files = [\n    'avatar' =\u003e __DIR__ . DIRECTORY_SEPARATOR . 'avatar.jpg',\n];\n$request = RequestBuilder::post('/users')\n    -\u003emultipart($data, $files)\n    -\u003ecreate()\n```\n\n#### JSON Data\n\n```php\n$data = [\n    'hello' =\u003e 'world',\n];\n$request = RequestBuilder::post('/users')\n    -\u003ejsonData($data)\n    -\u003ecreate()\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frazonyang%2Fswoole-unit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frazonyang%2Fswoole-unit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frazonyang%2Fswoole-unit/lists"}