vladdnepr/graphql-test
Composer 安装命令:
composer require vladdnepr/graphql-test
包简介
GraphQL Test Cases
README 文档
README
Makes testing your GraphQL queries and mutations easier.
Support for Symfony.
Documentation
Installation
1. Add dependency with composer
composer require --dev vladdnepr/graphql-test
If you are using Symfony you will have to install "symfony/browser-kit".
How to use
Depending on your framework, extend the correct TestCase:
use VladDnepr\GraphQLTest\Bridge\Symfony\TestCase;
Everything you see in the next snippets is the same for all Test Cases.
In your tests you now have 2 additional helper methods:
public function query(QueryInterface $query, array $files = [], array $headers = []); public function mutation(MutationInterface $mutation, array $files = [], array $headers = [])
By default, endpoint is /graphql, you can overwrite this by changing variable in your tests:
use VladDnepr\GraphQLTest\Bridge\Symfony\TestCase; class UserTest extends TestCase { public static $endpoint = '/'; }
There is a helper method that allows you to preset headers:
use VladDnepr\GraphQLTest\Bridge\Symfony\TestCase; class SettingsTest extends TestCase { protected function setUp() { $this->setDefaultHeaders([ 'Content-Type' => 'application/json', ]); } }
Examples
Query
use VladDnepr\GraphQLTest\Bridge\Symfony\TestCase; use VladDnepr\GraphQLTest\Operation\Query; class SettingsQueryTest extends TestCase { public static $endpoint = '/'; protected function setUp() { $this->setDefaultHeaders([ 'Content-Type' => 'application/json', ]); } public function testSettingsQuery(): void { $query = $this->query( new Query( 'settings', [], [ 'name', 'isEnabled', ], ) ); //Fetch response and do asserts } }
VladDnepr\GraphQLTest\Operation\Query construct accepts 3 arguments:
- name of query (mandatory)
- parameters (optional)
- fields (optional)
Mutation
use VladDnepr\GraphQLTest\Bridge\Symfony\TestCase; use VladDnepr\GraphQLTest\Operation\Mutation; class SettingsMutationTest extends TestCase { public static $endpoint = '/'; protected function setUp() { $this->setDefaultHeaders([ 'Content-Type' => 'application/json', ]); } public function testSettingsMutation(): void { $mutation = $this->mutation( new Mutation( 'createSettings', [ 'name' => 'hide-menu-bar', 'isEnabled' => true, ], [ 'name', 'isEnabled', ], ) ); //Fetch response and do asserts } }
VladDnepr\GraphQLTest\Operation\Mutation construct accepts 3 arguments:
- name of mutation (mandatory)
- parameters (optional)
- fields (optional)
If you have a Enum, Boolean or Array as an argument you can pass it as following:
use VladDnepr\GraphQLTest\Bridge\Symfony\TestCase; use VladDnepr\GraphQLTest\Operation\Mutation; use VladDnepr\GraphQLTest\Type\EnumType; use VladDnepr\GraphQLTest\Type\BooleanType; use VladDnepr\GraphQLTest\Type\ArrayType; class UserMutationTest extends TestCase { //... public function testUserMutation(): void { $mutation = $this->mutation( new Mutation( 'createUser', [ 'username' => 'kunicmarko20', 'salutation' => new EnumType('Mr'), 'enabled' => new BooleanType(true), 'roles' => new ArrayType(['ROLE_ADMIN', 'ROLE_TEST']), //.. ], [ 'username', 'salutation', ], ) ); //Fetch response and do asserts } }
Also, if you need a custom type you can always extend VladDnepr\GraphQLTest\Type\TypeInterface
and use your own Type instead.
vladdnepr/graphql-test 适用场景与选型建议
vladdnepr/graphql-test 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 22.84k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2022 年 09 月 12 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「symfony」 「graphql」 「graphql-test」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 vladdnepr/graphql-test 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 vladdnepr/graphql-test 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 vladdnepr/graphql-test 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
GraphQL Test Cases
GraphQL authentication for your headless Craft CMS applications.
The bundle for easy using json-rpc api on your project
Authorize introspection documentarion for rebing/graphql-laravel
Sylius backend integration for Vue Storefront 2
GraphQL client and query builder.
统计信息
- 总下载量: 22.84k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 6
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-09-12