1

我正在尝试使用 Behat 和 Mink 来测试一个 symfony 2.1 项目。

我的 FeatureContext.php:

<?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 Behat\MinkExtension\Context\MinkContext {

    /**
     * Initializes context.
     * Every scenario gets it's own context object.
     *
     * @param array $parameters context parameters (set them up through behat.yml)
     */
    public function __construct(array $parameters)
    {
        // Initialize your context here
    }

//
// Place your definition and hook methods here:
//
//    /**
//     * @Given /^I have done something with "([^"]*)"$/
//     */
//    public function iHaveDoneSomethingWith($argument)
//    {
//        doSomethingWith($argument);
//    }
//
}

作曲家.json

     "behat/behat": ">=2.2.2",
    "behat/mink":  ">=1.3.2",
    "behat/symfony2-extension":     "*",
    "behat/mink-extension":         "*",
    "behat/mink-browserkit-driver": "*",
    "behat/mink-selenium-driver":   "*"

应用程序/配置/behat.yml

default:
  extensions:
    Behat\Symfony2Extension\Extension:
      mink_driver: true
      kernel:
        env: test
        debug: true
    Behat\MinkExtension\Extension:
      base_url: 'http://localhost:8080/app_test.php/'
      default_session: symfony2
      javascript_session: selenium
      selenium:
        host: 127.0.0.1
        port: 4444

当我做 ./bin/behat 我得到:

功能:登录为了登录作为用户,我需要能够验证用户名和密码

场景:链接到登录页面# features/login.feature:7 PHP 致命错误:在 vendor/behat/mink-extension/src/Behat/MinkExtension/Context/RawMinkContext 中的非对象上调用成员函数 getSession()。第 81 行的 php

致命错误:在第 81 行的 vendor/behat/mink-extension/src/Behat/MinkExtension/Context/RawMinkContext.php 中的非对象上调用成员函数 getSession()

任何想法?

五。

4

2 回答 2

2

您的 behat.yml 不应位于app/config/behat.yml,而应位于your/project/root/behat.yml

于 2013-07-11T13:32:19.370 回答
0

感谢@Stuart 和@spiritoo在这里的回答。

首先,将 behat.yml 从 /config 移动到项目根目录。

其次,behat.yml 的内容:

default:
suites:
    my_suite:
        contexts:
            - FeatureContext
extensions:
    Behat\Symfony2Extension: ~
    Behat\MinkExtension:
        base_url: http://en.wikipedia.org
        goutte: ~
        sessions:
            default:
                symfony2: ~

最后,在项目根目录中,运行:

vendor/bin/behat features/{YOUR TEST FILE HERE}

我的 composer.json 文件:


"require-dev": {
    "behat/behat": "^3.3",
    "behat/mink": "^1.7",
    "behat/mink-extension": "^2.2",
    "behat/mink-browserkit-driver": "^1.3",
    "behat/mink-goutte-driver": "^1.2",
    "behat/symfony2-extension": "^2.1",
    "behat/mink-selenium2-driver": "^1.3"
  }
于 2017-04-20T01:28:25.730 回答