laravelfr / api-testing by mathieutu

A package which provide all you need for testing apis!
1,944
1
2
Package Data
Maintainer Username: mathieutu
Maintainer Contact: dev@mathieutu.ovh (Mathieu TUDISCO)
Package Create Date: 2016-11-22
Package Last Update: 2017-07-31
Home Page:
Language: PHP
License: GPL-3.0
Last Refreshed: 2024-11-23 03:03:50
Package Statistics
Total Downloads: 1,944
Monthly Downloads: 1
Daily Downloads: 0
Total Stars: 1
Total Watchers: 2
Total Forks: 0
Total Open Issues: 0

Laravel Api Testing

By the LaravelFr Team

This package provide you some methods to fully test your Laravel API.

The LaravelFr team is a group of french friends who decide to put in common some useful methods for testing API. Whoever you are, feel free to contribute to this package or join the organisation to add yours !

Travis Build StyleCI Code Coverage Code Quality

Installation

composer require laravelfr/api-testing

Usage

Once Laravel API Testing is installed, you can extend or implement the classes and traits in this package. There are no service providers to register.

It works both with old testing way (Laravel <5.4 and >5.4 with BrowserKit) and with new testing way (with response object).

  • Old way: Just use \LaravelFr\ApiTesting\AssertArrays and \LaravelFr\ApiTesting\AssertJsonResponse traits, and use directly the methods from traits.
  • New way: for AssertJsonResponse, you can add the trait, and directly use the methods on response object.

See Tests for some examples.

Available methods:

On this response example :

{
   "foo": 134,
   "foobar": {
       "foobar_foo": "foo",
       "foobar_bar": 212
   },
   "bars": [
       {
           "bar": true,
           "foo": 134.212
       },
       {
           "bar": false,
           "foo": 134.212
       },
       {
           "bar": false,
           "foo": 134.212
       }
   ],
   "baz": [
       {
           "foo": "Laravel",
           "bar": {
               "foo": true,
               "bar": 134
           }
       },
       {
           "foo": "France",
           "bar": {
               "foo": false,
               "bar": 212
           }
       }
   ]
}
  • assertJsonStructureEquals: check if it respects the exact structure pattern.
$response->assertJsonStructureEquals([
    'foo',
    'baz' => ['*' => ['bar' => ['*'], 'foo']],
    'bars' => ['*' => ['bar', 'foo']],
    'foobar' => ['foobar_foo', 'foobar_bar'],
]);
  • seeJsonTypedStructure: check if it respects a typed pattern.
$response->seeJsonTypedStructure([
    'foo' => 'integer',
    'baz' => ['*' => ['bar' => 'array', 'foo' => 'string']],
    'bars' => ['*' => ['bar' => 'boolean', 'foo' => 'float']],
    'foobar' => ['foobar_foo' => 'string', 'foobar_bar' => 'int'],
]);
  • seeJsonTypedStructure: retrieve a part of response in array format.
$response->jsonResponse('foobar.foobar_bar')); // 212

Credits

Please feel free to make PRs and add yours!