vladdnepr/graphql-test
最新稳定版本:v0.3.1
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.
统计信息
- 总下载量: 20.18k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-01-04