Я получаю эту ошибку при попытке запустить мои тесты поведения из командной строки.
Полный вывод ошибки выглядит следующим образом:
$ behat Feature: View a list of current custom tariffs In order to provide custom call pricing to customers As a user of the Voxbeam Admin site I expect to be able to correctly administrate a users custom tariffs @sahi Scenario: Listing existing custom tariffs # features/custom_tariff_admin.feature:7 PHP Fatal error: Call to a member function getSession() on a non-object in /Users/stuart/bin/vendor/behat/mink-extension/src/Behat/MinkExtension/Context/RawMinkContext.php on line 81 PHP Stack trace: PHP 1. {main}() /Users/stuart/bin/vendor/behat/behat/bin/behat:0 PHP 2. Symfony\Component\Console\Application->run() /Users/stuart/bin/vendor/behat/behat/bin/behat:32 PHP 3. Behat\Behat\Console\BehatApplication->doRun() /Users/stuart/bin/vendor/symfony/console/Symfony/Component/Console/Application.php:106 PHP 4. Symfony\Component\Console\Application->doRun() /Users/stuart/bin/vendor/behat/behat/src/Behat/Behat/Console/BehatApplication.php:68 PHP 5. Symfony\Component\Console\Command\Command->run() /Users/stuart/bin/vendor/symfony/console/Symfony/Component/Console/Application.php:193 PHP 6. Behat\Behat\Console\Command\BehatCommand->execute() /Users/stuart/bin/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:240 PHP 7. Behat\Behat\Console\Command\BehatCommand->runFeatures() /Users/stuart/bin/vendor/behat/behat/src/Behat/Behat/Console/Command/BehatCommand.php:128 PHP 8. Behat\Gherkin\Node\AbstractNode->accept() /Users/stuart/bin/vendor/behat/behat/src/Behat/Behat/Console/Command/BehatCommand.php:150 PHP 9. Behat\Behat\Tester\FeatureTester->visit() /Users/stuart/bin/vendor/behat/gherkin/src/Behat/Gherkin/Node/AbstractNode.php:42 PHP 10. Behat\Gherkin\Node\AbstractNode->accept() /Users/stuart/bin/vendor/behat/behat/src/Behat/Behat/Tester/FeatureTester.php:88 PHP 11. Behat\Behat\Tester\ScenarioTester->visit() /Users/stuart/bin/vendor/behat/gherkin/src/Behat/Gherkin/Node/AbstractNode.php:42 PHP 12. Behat\Behat\Tester\ScenarioTester->visitStep() /Users/stuart/bin/vendor/behat/behat/src/Behat/Behat/Tester/ScenarioTester.php:87 PHP 13. Behat\Gherkin\Node\AbstractNode->accept() /Users/stuart/bin/vendor/behat/behat/src/Behat/Behat/Tester/ScenarioTester.php:148 PHP 14. Behat\Behat\Tester\StepTester->visit() /Users/stuart/bin/vendor/behat/gherkin/src/Behat/Gherkin/Node/AbstractNode.php:42 PHP 15. Behat\Behat\Tester\StepTester->executeStep() /Users/stuart/bin/vendor/behat/behat/src/Behat/Behat/Tester/StepTester.php:95 PHP 16. Behat\Behat\Tester\StepTester->executeStepDefinition() /Users/stuart/bin/vendor/behat/behat/src/Behat/Behat/Tester/StepTester.php:126 PHP 17. Behat\Behat\Definition\Annotation\Definition->run() /Users/stuart/bin/vendor/behat/behat/src/Behat/Behat/Tester/StepTester.php:157 PHP 18. call_user_func_array() /Users/stuart/bin/vendor/behat/behat/src/Behat/Behat/Definition/Annotation/Definition.php:155 PHP 19. Behat\MinkExtension\Context\MinkContext->visit() /Users/stuart/bin/vendor/behat/behat/src/Behat/Behat/Definition/Annotation/Definition.php:155 PHP 20. Behat\MinkExtension\Context\RawMinkContext->getSession() /Users/stuart/bin/vendor/behat/mink-extension/src/Behat/MinkExtension/Context/MinkContext.php:45
My behat.yml:
# behat.yml default: paths: features: features bootstrap: %behat.paths.features%/bootstrap extensions: Behat\MinkExtension\Extension: base_url: 'http://dev.example.com' goutte: ~ sahi: ~ annotations: paths: features: features/annotations closures: paths: features: features/closures
У меня очень простой FeatureContext:
<?php use Behat\Behat\Context\ClosuredContextInterface, Behat\Behat\Context\BehatContext, Behat\Behat\Exception\PendingException, Behat\Behat\Context\Step; use Behat\Gherkin\Node\PyStringNode, Behat\Gherkin\Node\TableNode; use Behat\MinkExtension\Context\MinkContext; // // Require 3rd-party libraries here: // // require_once 'PHPUnit/Autoload.php'; // require_once 'PHPUnit/Framework/Assert/Functions.php'; // /** * Features context. */ class FeatureContext extends MinkContext { /** * @Given /^I am logged in as "([^"]*)" with password "([^"]*)"$/ */ public function iAmLoggedInAsWithPassword($userName, $password) { return array( new Step\Given('I am on "/login"'), new Step\Given('I should see "fert"') ); } // // Place your definition and hook methods here: // // /** // * @Given /^I have done something with "([^"]*)"$/ // */ // public function iHaveDoneSomethingWith($argument) // { // doSomethingWith($argument); // } // }
и такая же простая особенность:
Feature: Administer a customers custom tariffs In order to provide custom call pricing to customers As a user of the Admin site I expect to be able to correctly administrate a users custom tariffs Scenario: Listing existing custom tariffs Given I am on "/" I should see "Fert"
Убедитесь, что файл behat.yml находится в правильном месте. Он должен быть в корне вашего проекта, а не в каких-либо подкаталогах.
Если совет Стюарта Гримшоу не работает, это может быть по двум причинам:
Я тоже получал аналогичную фатальную ошибку
PHP Fatal error: Call to a member function getSession() on a non-object in /home/ahad/sites/symfony/vendor/behat/mink-extension/src/Behat/MinkExtension/Context/RawMinkContext.php on line 101
Я поставил свой ответ здесь. Борясь за то, чтобы заставить Минк работать с Бехатом
Что решило мою проблему.