Installation

composer.json


{
    "require-dev": {
        "behat/behat": "3.0"
    }
}

Tester l'installation
vendor/bin/behat -V

Configurer behat
vendor/bin/behat --init

Notes

Les étapes sont les éléments d'un scénario.
Exemple :

Given
Donné, déterminé
Given there is a "Sith Lord Lightsaber", which costs £5

Behat, en parcourant le fichier *.feature, saura quoi lancer en consultant les méthodes dans FeatureContext.php.
Exemple :
fichier *.feature
Given there is a "Sith Lord Lightsaber", which costs £5
exécutera:


/**
 * @Given there is a(n) :arg1, which costs £:arg2
 */
public function thereIsAWhichCostsPs($arg1, $arg2)
{
    throw new PendingException();
}

On décrit une fonctionnalité sous forme de scénario, dans un fichier features/*.feature.
Une feature est découpé en plusieurs scénario.
Un scenario est constitué de plusieurs étapes (voir plus haut).
Behat va trouver comment tester les différentes étapes grace au fichier features/bootstrap/FeatureContext.php.
Dans ce fichier, on trouvera une méthode correspondant à une étape d'un scénario.
On peux nommer cette méthode comme on veut, du moment que le doc-block de celle-ci soit composée du type de l'étape,
suivi de la chaine de caractère (en gros, à voir les mots clés):
@Given there is a :product, which costs £:price.
À partir de là, on précise par quel outil on souhaite faire des assertions.
Par exemple:


public function __construct()
{
    $this->shelf  = new Shelf();
    $this->basket = new Basket($this->shelf);
}
…
/**
    * @Then I should have :count product(s) in the basket
    */
public function iShouldHaveProductInTheBasket($count)
{
    PHPUnit_Framework_Assert::assertCount(
        intval($count),
        $this->basket
    );
}

Pour les tests unitaires,
On peut mélanger plusieurs types de tests ? Genre fonctionnel et unitaire ?

Tests unitaires


#

Tests fonctionnels


#

config

behat.yml contient la configuration de behat.
On pourra spécifier le chemin de nos features ainsi que du bootstrap.
Il déclare les extensions à activer.
En faisant vendor/bin/behat --init, behat prendra en compte ce fichier pour créer l'arborescence.


default:
    paths:
        features: features
        bootstrap: %behat.paths.features%/bootstrap
    extension:
        Behat\MinkExtension\Extension:
            goutte: ~