0

尝试从命令行运行我的行为测试时出现此错误。

错误的完整输出如下所示:

$ 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

我的 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"
4

3 回答 3

6

确保您的 behat.yml 文件位于正确的位置。它应该位于项目的根目录中,而不是任何子目录中。

于 2013-02-06T11:24:59.407 回答
1

如果 Stuart Grimshaw 的建议不起作用,可能是因为两个原因:

  1. 您的 composer.json 配置不正确;获得使 Mink、Behat、Goutte、Selenium、Zombie 或 Symfony2.. 一起工作所需的 5 或 6 个不同模块的正确版本是很棘手的;所以请在这些扩展的每个 composer.json 中手动检查其他组件的所需版本;另外,尽量不要使用 mink-bundle,其所需依赖项的版本似乎很旧
  2. 不要从你的 bundle 目录运行 bin\behat 命令(在 Windows 或 Linux 下);否则找不到 .yml 配置文件(肯定有一些与相对路径相关的晦涩原因)。您应该从项目的根目录运行 bin\behat 命令(首先运行 cd 命令
于 2015-01-27T15:11:15.400 回答
0

我也遇到了类似的致命错误

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

我已经把我的答案放在这里努力让 Mink 与 Behat 合作

这解决了我的问题。

于 2015-04-30T06:14:19.500 回答