Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jakzal/behatnoextension
This Behat extension makes it possible to extend Behat without having to write an extension yourself.
https://github.com/jakzal/behatnoextension
behat behat-extension container php psr-11 symfony
Last synced: about 2 months ago
JSON representation
This Behat extension makes it possible to extend Behat without having to write an extension yourself.
- Host: GitHub
- URL: https://github.com/jakzal/behatnoextension
- Owner: jakzal
- License: mit
- Created: 2015-02-03T22:20:25.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2019-12-15T09:21:25.000Z (about 5 years ago)
- Last Synced: 2024-10-20T07:37:45.640Z (2 months ago)
- Topics: behat, behat-extension, container, php, psr-11, symfony
- Language: PHP
- Homepage: https://packagist.org/packages/zalas/behat-no-extension
- Size: 62.5 KB
- Stars: 31
- Watchers: 4
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
Behat No Extension
==================[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/jakzal/BehatNoExtension/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/jakzal/BehatNoExtension/?branch=master)
[![Build Status](https://scrutinizer-ci.com/g/jakzal/BehatNoExtension/badges/build.png?b=master)](https://scrutinizer-ci.com/g/jakzal/BehatNoExtension/build-status/master)
[![Build Status](https://travis-ci.org/jakzal/BehatNoExtension.svg?branch=master)](https://travis-ci.org/jakzal/BehatNoExtension)This Behat extension makes it possible to extend Behat without having to write an
extension yourself.Installation
------------This extension requires:
* Behat ^3.0
* PHP ^7.1The easiest way to install it is to use Composer
```
$ composer require --dev zalas/behat-no-extension
```Next, activate the extension in your ``behat.yml``:
```yaml
# behat.yml
default:
extensions:
Zalas\Behat\NoExtension: ~
```Importing service definitions
-----------------------------Extension enables you to load service definitions and parameters from
configuration files specified in the ``imports`` section:```yaml
# behat.yml
default:
extensions:
Zalas\Behat\NoExtension:
imports:
- features/bootstrap/config/services.yml
```These should simply be
[Symfony's service container](http://symfony.com/doc/current/components/dependency_injection/introduction.html#setting-up-the-container-with-configuration-files)
configuration files:```yaml
# features/bootstrap/config/services.yml
services:
Acme\SimpleArgumentResolver:
tags:
- { name: context.argument_resolver }parameters:
acme.foo: boo!
```Yaml, xml and php formats are currently supported.
Note that any classes you'd like to use should be autoloaded by composer.
For the example above, `autoload-dev` or `autoload` should include the `Acme\\` autoloader prefix.Injecting services into contexts
--------------------------------Enable the argument resolver to take advantage of the built in support for service injection:
```yaml
# behat.yml
default:
extensions:
Zalas\Behat\NoExtension:
argument_resolver: true
imports:
- features/bootstrap/config/services.yml
```Assuming services you'd like to inject into contexts are defined in `features/bootstrap/Acme`,
and they're autoloaded by composer, you can now start defining them in your configuration file:```yaml
# features/bootstrap/config/services.yml
services:Acme\:
resource: '../Acme'
public: true
autowire: true
```The above example relies on autoworing, but you could also define each service explicitly.
An example composer autoloader configuration:
```json
{
"autoload-dev": {
"psr-4": {
"Acme\\": "features/bootstrap/Acme"
}
}
}
```Given there's a class `Acme\Foo` defined, it can now be injected into contexts:
```php
use Acme\Foo;
use Behat\Behat\Context\Context;class FeatureContext implements Context
{
private $foo;public function __construct(Foo $foo)
{
$this->foo = $foo;
}
}
```Defining parameters
-------------------Parameters defined in imported files are also available in ``behat.yml``:
```yaml
# behat.yml
default:
suites:
search:
contexts:
- SearchContext:
myFoo: '%acme.foo%'
# ...
```Furthermore, parameters can also be defined as part of extension's configuration directly in ``behat.yml``:
```yaml
# behat.yml
default:
extensions:
Zalas\Behat\NoExtension:
parameters:
foo: bar
baz:
a: 1
b: 'bazinga!'
```## Contributing
Please read the [Contributing guide](CONTRIBUTING.md) to learn about contributing to this project.
Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md).
By participating in this project you agree to abide by its terms.