PHPackages                             interactive-solutions/zf-behat - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Testing &amp; Quality](/categories/testing)
4. /
5. interactive-solutions/zf-behat

AbandonedArchivedBehat-extension[Testing &amp; Quality](/categories/testing)

interactive-solutions/zf-behat
==============================

Interactive Solutions extension for Behat

1.4.0(8y ago)02.2k[2 issues](https://github.com/interactive-solutions/zf-behat/issues)[1 PRs](https://github.com/interactive-solutions/zf-behat/pulls)PHPPHP &gt;=5.5.0

Since Aug 5Pushed 7y ago2 watchersCompare

[ Source](https://github.com/interactive-solutions/zf-behat)[ Packagist](https://packagist.org/packages/interactive-solutions/zf-behat)[ RSS](/packages/interactive-solutions-zf-behat/feed)WikiDiscussions master Synced today

READMEChangelog (10)Dependencies (3)Versions (42)Used By (0)

InteractiveSolutions/Zf-behat
=============================

[](#interactivesolutionszf-behat)

Description
-----------

[](#description)

A set of predefined step definitions to handle the most common cases when testing a REST API through Zend Framework.

Setup
-----

[](#setup)

Add it to your `behat.yml` file as follows:

```
default:
  extensions:
    InteractiveSolutions\ZfBehat:
      # configurable parameters

```

The available configurable parameters for this module are:

- `config_file` - path to your autoload configuration file for your api (default `config/application.config.php`).
- `api_url` - base url of your api (default `http://localhost`).
- `mailcatcher_url` - the url to your mailcatcher server (default `http://mailcatcher:1080`).

Enable the module `InteractiveSolutions\ZfBehat` in your autoload config file.

Available contexts
------------------

[](#available-contexts)

The module contains a bunch of different steps for various types of testing, all of which can be seen below.

*Please see each individual context for further reference*.

### ApiContext

[](#apicontext)

This context contains all step definitions for various api calls.

### BernardContext

[](#bernardcontext)

Context containing basic steps for testing an application using bernard to run background tasks.

### DatabaseContext

[](#databasecontext)

Manages the Doctrine entity manager. Contains a single step that should be run as a background in each feature file (`Given a clean database`). This step drops and rebuilds the entire database, allowing a clean database before each scenario.

### EntityFixtureContext

[](#entityfixturecontext)

Contains various steps for setting up a scenario by creating entities.

### MailcatcherContext

[](#mailcatchercontext)

Manages mail testing using the specified `mailcatcher_url`. Useful for testing if activation emails (and similar) are sent.

### ZfrOAuthContext

[](#zfroauthcontext)

Contains steps needed for zfr-oauth authentication/authorization.

Configuring default parameters
------------------------------

[](#configuring-default-parameters)

Paste the `interactive-solutions.zf-behat.global.php.dist` into your config.

`UserOptions` are used to specify default parameters for users in the steps defined in the *ZfrOAuthContext*.

```
UserOptions::class => [
    //The user entity class to use
    'userEntityClass' => UserEntity::class,
    'defaultUserProperties' => [
        'firstName' => 'First',
        'lastName'  => 'Last',
        // password field is automatically bcrypted when entity is generated
        'password'  => '12345',
        'createdAt' => new DateTime(),
    ],
],
```

`EntityOptions` are used to specify default parameters for entities created and manages through the *EntityFixtureContext* and *ApiContext*.

```
EntityOptions::class => [
    // fill in the entity keys and their corresponding route/default values
    'entities' => [
        'match' => [
            // aliases are used to provide a better flow in your scenarios
            'aliases' => [
                'matches',
            ],
            'entity'  => MatchEntity::class,
            'route'  => 'matches'
            'defaultProperties' => [
                'type'        => 'SinglePlayer',
                'winner'      => 1,
                'winnerScore' => 1337,
                'finishedAt'  => new DateTime(),
            ]
        ]
    ]
]
```

Things to note with `EntityOptions`

- route is automatically prefixed with `/`, so `matches` becomes `/matches`
- aliases are used to create an alias for a configured entity
- defaultProperties are also used as default parameters when sending api requests

Using aliases in TableNodes or PyStringNode
-------------------------------------------

[](#using-aliases-in-tablenodes-or-pystringnode)

```
    Given an existing "TYPE" created with static method "create" with alias "TYPE1"
    When I add a new "TYPE" with:
    """
      {
        "clinicId": "%Alias:FieldName%"
      }
    """
```

If Alias does exist, %Alias:FieldName% is replaced with the FieldName of the Alias entity

You can also reference only the alias, if so, it will use the primary key of the entity.

License
-------

[](#license)

Copyright (c) 2016 Interactive Solutions Bodama AB

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

###  Health Score

33

—

LowBetter than 72% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity70

Established project with proven stability

 Bus Factor1

Top contributor holds 50.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~21 days

Total

28

Last Release

3045d ago

Major Versions

0.0.2 → 1.0.02016-09-09

0.3.1 → 1.3.12017-12-23

### Community

Maintainers

![](https://www.gravatar.com/avatar/825f7193bec88275f660c65faab1790ed620948f5dd7a6c96515d1f12609127d?d=identicon)[mac\_nibblet](/maintainers/mac_nibblet)

---

Top Contributors

[![noggan](https://avatars.githubusercontent.com/u/7058221?v=4)](https://github.com/noggan "noggan (28 commits)")[![awartoft](https://avatars.githubusercontent.com/u/1127626?v=4)](https://github.com/awartoft "awartoft (13 commits)")[![Hotas2k](https://avatars.githubusercontent.com/u/1724484?v=4)](https://github.com/Hotas2k "Hotas2k (13 commits)")[![malindvall](https://avatars.githubusercontent.com/u/8821382?v=4)](https://github.com/malindvall "malindvall (1 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/interactive-solutions-zf-behat/health.svg)

```
[![Health](https://phpackages.com/badges/interactive-solutions-zf-behat/health.svg)](https://phpackages.com/packages/interactive-solutions-zf-behat)
```

###  Alternatives

[aws/aws-sdk-php

AWS SDK for PHP - Use Amazon Web Services in your PHP project

6.2k532.1M2.5k](/packages/aws-aws-sdk-php)[neuron-core/neuron-ai

The PHP Agentic Framework.

2.0k496.1k33](/packages/neuron-core-neuron-ai)[drupal/drupal-extension

Drupal extension for Behat

21115.5M166](/packages/drupal-drupal-extension)[tencentcloud/tencentcloud-sdk-php

TencentCloudApi php sdk

3661.2M46](/packages/tencentcloud-tencentcloud-sdk-php)[imbo/behat-api-extension

API extension for Behat

1092.6M9](/packages/imbo-behat-api-extension)[tempest/framework

The PHP framework that gets out of your way.

2.2k31.1k12](/packages/tempest-framework)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
