2013-05-24 5 views
1

Я пытаюсь использовать Behat и Mink для тестирования проекта symfony 2.1.Тестирование проекта symfony 2.1 с использованием behat и mink

Мои 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); 
// } 
// 
} 

composer.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": "*" 

приложение/Config/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 я получаю :

Характеристика: Войти Для входа Как пользователь мне нужно, чтобы иметь возможность проверить имя пользователя и пароль

Сценарий: Ссылка на страницу входа # функции/login.feature: 7 PHP Фатальная ошибка: Вызов функции члена getSession() на не-объекте в vendor/behat/mink-extension/src/Behat/MinkExtension/Context/RawMinkContext.php в строке 81

Неустранимая ошибка: вызов функции-члена getSession() для объекта без объекта in vendor/behat/mink-extension/src/Behat/MinkExtension/Context/RawMinkContext.php в строке 81

Любая идея?

v.

ответ

2

Ваш behat.yml не должен находиться в app/config/behat.yml, но в your/project/root/behat.yml

0

Спасибо за @Stuart и @spiritoo ответы here.

Во-первых, переместите файл 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" 
    }