2014-03-14 3 views
5

Я пытаюсь узнать Behat с помощью tutorial on the website.Класс 'Behat Behat Context BehatContext' не найден в PHP с Behat

Первый шаг идет нормально, ошибок не возникает.

Но когда я меняю ls_project/features/bootstrap/FeatureContext.php, как показано в следующем уроке, я получаю следующую ошибку: 'Behat\Behat\Context\BehatContext' not found.

Код учебник, к которому применяется изменение:

# features/bootstrap/FeatureContext.php 
<?php 

use Behat\Behat\Context\BehatContext, 
    Behat\Behat\Exception\PendingException; 
use Behat\Gherkin\Node\PyStringNode, 
    Behat\Gherkin\Node\TableNode; 

class FeatureContext extends BehatContext 
{ 
    /** 
    * @Given /^I am in a directory "([^"]*)"$/ 
    */ 
    public function iAmInADirectory($dir) 
    { 
     if (!file_exists($dir)) { 
      mkdir($dir); 
     } 
     chdir($dir); 
    } 
} 

Полный журнал ошибок:

11:51:33/ME : /var/www/test-driven/behat/ls_project 
$ behat 
# features/bootstrap/FeatureContext.php 
PHP Fatal error: Class 'Behat\Behat\Context\BehatContext' not found in /var/www/test-driven/behat/ls_project/features/bootstrap/FeatureContext.php on line 10 
PHP Stack trace: 
PHP 1. {main}() /opt/Behat/bin/behat:0 
PHP 2. Symfony\Component\Console\Application->run() /opt/Behat/bin/behat:31 
PHP 3. Behat\Testwork\Cli\Application->doRun() /opt/Behat/vendor/symfony/console/Symfony/Component/Console/Application.php:121 
PHP 4. Symfony\Component\Console\Application->doRun() /opt/Behat/src/Behat/Testwork/Cli/Application.php:90 
PHP 5. Symfony\Component\Console\Application->doRunCommand() /opt/Behat/vendor/symfony/console/Symfony/Component/Console/Application.php:191 
PHP 6. Symfony\Component\Console\Command\Command->run() /opt/Behat/vendor/symfony/console/Symfony/Component/Console/Application.php:892 
PHP 7. Behat\Testwork\Cli\Command->execute() /opt/Behat/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:241 
PHP 8. Behat\Testwork\Tester\Cli\ExerciseController->execute() /opt/Behat/src/Behat/Testwork/Cli/Command.php:63 
PHP 9. Behat\Testwork\Tester\Cli\ExerciseController->testSpecifications() /opt/Behat/src/Behat/Testwork/Tester/Cli/ExerciseController.php:106 
PHP 10. Behat\Testwork\EventDispatcher\Tester\EventDispatchingExercise->test() /opt/Behat/src/Behat/Testwork/Tester/Cli/ExerciseController.php:137 
PHP 11. Behat\Testwork\Tester\Runtime\RuntimeExercise->test() /opt/Behat/src/Behat/Testwork/EventDispatcher/Tester/EventDispatchingExercise.php:65 
PHP 12. Behat\Testwork\Environment\EnvironmentManager->buildEnvironment() /opt/Behat/src/Behat/Testwork/Tester/Runtime/RuntimeExercise.php:67 
PHP 13. Behat\Behat\Context\Environment\Handler\ContextEnvironmentHandler->buildEnvironment() /opt/Behat/src/Behat/Testwork/Environment/EnvironmentManager.php:69 
PHP 14. Behat\Behat\Context\Environment\UninitializedContextEnvironment->registerContextClass() /opt/Behat/src/Behat/Behat/Context/Environment/Handler/ContextEnvironmentHandler.php:75 

Может кто-нибудь, пожалуйста, помогите мне решение этого вопроса?

ответ

8

Кажется, вы установили Behat v3, но вы следуете за Behat 2 документами.

Behat 3

Behat 3 не имеет Behat\Behat\Context\BehatContext класс. У него есть Behat\Behat\Context\Context интерфейс:

use Behat\Behat\Context\Context; 

class FeatureContext implements Context 
{ 
    // ... 
} 

В composer.json:

{ 
    "require-dev": { 
     "behat/behat": "~3.1" 
    }, 
    "config": { 
     "bin-dir": "bin/" 
    } 
} 

Behat 2

Behat 2 использует Behat\Behat\Context\BehatContext базовый класс:

use Behat\Behat\Context\BehatContext; 

class FeatureContext extends BehatContext 
{ 
    // ... 
} 

В composer.json:

{ 
    "require-dev": { 
     "behat/behat": "~2.5" 
    }, 
    "config": { 
     "bin-dir": "bin/" 
    } 
} 
+0

Конечно, с помощью команды git я установил версию Behat 3. С композитором это выглядит нормально. Благодарю. Fabrice – fabrice

+0

Примите ответ, если это поможет ... –

6

В behat 3 есть другая структура, так что вы должны использовать новый путь к behat контекст, который находится в Behat/Behat/контекст/контекст

<?php 

use Behat\Behat\Context\Context; 
use Behat\MinkExtension\Context\RawMinkContext; 
use Behat\Behat\Context\CustomSnippetAcceptingContext; 
use Behat\Behat\Tester\Exception\PendingException; 
use Behat\Gherkin\Node\PyStringNode; 
use Behat\Gherkin\Node\TableNode; 

class FeatureContext extends RawMinkContext implements Context { 
} 

Так что используйте это, например: -)

Смежные вопросы