Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Behat - Context class not found.

This is my directory structure:

composer.json
composer.phar
vendor/
    bin/
        behat
tests/
    functional/
        behat.yml
        features/
            registration.feature
            bootstrap/
                FeatureContext.php

I did:

cd tests/functional
../../vendor/bin/behat --init

Which created basic structure for me. This is inside behat.yml:

default:
  paths:
    features: '%behat.paths.base%/features'
    bootstrap:  '%behat.paths.base%/features/bootstrap'

Now I try to run BDD tests like this:

vendor/bin/behat -c tests/functional/behat.yml

And I get:

  [RuntimeException]                                                       
  Context class not found.                                                 
  Maybe you have provided wrong or no `bootstrap` path in your behat.yml:  
  http://docs.behat.org/guides/7.config.html#paths                         



behat [--init] [-f|--format="..."] [--out="..."] [--lang="..."] [--[no-]ansi] [--[no-]time] [--[no-]paths] [--[no-]snippets] [--[no-]snippets-paths] [--[no-]multiline] [--[no-]expand] [--story-syntax] [-d|--definitions="..."] [--name="..."] [--tags="..."] [--cache="..."] [--strict] [--dry-run] [--rerun="..."] [--append-snippets] [--append-to="..."] [features]

Any idea what is the problem?

I installed Behat via Composer. This is my composer.json:

{
    "name": "hello",
    "description": "Hello World",
    "minimum-stability": "dev",
    "require": {
        "php": ">=5.3",
        "zendframework/zendframework": "2.1.4",
        "doctrine/common": "dev-master#d7987c96675e153638729383577090feed9854f1"
    },
    "require-dev": {
        "phpunit/phpunit": "3.7.14",
        "behat/behat": "2.4.*@stable"
    }
}

Which I installed with:

php composer.phar install --dev -o
like image 832
Richard Knop Avatar asked Apr 10 '13 14:04

Richard Knop


2 Answers

You initialised Behat while being in the tests/functional directory but you're trying to run it from the root directory.

Fix your paths:

default:
  paths:
    features: 'tests/functional/features'
    bootstrap:  'tests/functional/features/bootstrap'

Or run Behat from tests/functional directory.

I'd recommend to keep the original file layout (features in the root dir). Edit: Actually, I tried setting it up myself and it worked with the config you provided. There must be something else you're doing which you didn't specify in the question.

like image 79
Jakub Zalas Avatar answered Sep 28 '22 18:09

Jakub Zalas


This is what worked.

cd tests/functional
../../vendor/bin/behat --init
cd ../../
vendor/bin/behat -c tests/functional/behat.yml

With this config file:

default:
  paths:
    features: features
    bootstrap: features/bootstrap
like image 28
Richard Knop Avatar answered Sep 28 '22 17:09

Richard Knop