Бехат с норкой

Кто-нибудь знает, как успешно настроить Mink для работы с Behat? На случай, если кто-то не знает, Behat - это фреймворк BDD (Behavior-Driven Development) для PHP, а Mink предоставляет слой абстракции эмуляторов браузера для тестирования.

Вы можете узнать больше о Behat на http://behat.org/ и Mink на https://github.com/Behat/Mink или http://www.knplabs.com/fr/blog/one-mink-to-rule-them-all

В основном я следовал инструкциям на http://www.knplabs.com/fr/blog/one-mink-to-rule-them-all, чтобы настроить мой Mink для работы с моим Behat. Мой behat.yml, находящийся в папке Behat, а не в папке Mink, выглядит следующим образом:

default:
  paths:
    features:               %%BEHAT_CONFIG_PATH%%/features
    formatter:
    name:                   progress
pretty:
  formatter:
    name:                   pretty
    parameters:
      multiline_arguments:  false
default:
    environment:
        parameters:
            start_url: http://localhost/
imports:
    - mink/behat.yml

У меня также есть следующий код в моем features / support / boostrap.php

require_once 'mink/autoload.php';

Однако, имея следующий код в моем features / support / env.php

$world->client = new \Goutte\Client;

выдаст мне Неустранимая ошибка PHP: класс «Goutte \ Client» не найден в терминале (OSX), когда я использую команду behat. Это происходит, даже если у меня есть goutte.phar в папке behat / Mink / Vendor / Goutte.

Надеюсь, кто-нибудь сможет просветить меня, где я ошибся, и если в вопросе была какая-то часть вопроса, в которой я не был ясен, дайте мне знать. Большое спасибо.


person David Lin    schedule 02.06.2011    source источник


Ответы (1)


Вот он: https://github.com/knplabs/mink-demo ;-)

По сути, с Mink вам не нужно создавать или требовать клиента Goutte, это делает Mink автоматически. Ваш $ world также был улучшен, и теперь вы можете получить сеанс mink внутри определений шагов:

$downloadsLink = $world->getSession()->getPage()->findLink('downloads');

Кроме того, вы забыли включить PHPUnit!

См. Mink-demo для получения отличного примера ;-)

person everzet    schedule 02.06.2011
comment
Большое спасибо за предоставленную информацию =) у меня возникла еще одна проблема ~ я получил эту ошибку, когда использовал команду behat в демонстрации - ›Предупреждение PHP: preg_match (): Неизвестный модификатор 'w' в / usr / local /pear/share/pear/behat/src/Behat/Behat/Definition/DefinitionDispatcher.php в строке 185 «Учитывая, что я на / wiki / Main_Page». Может быть, это связано с определением шага: $ steps- ›Given ('/ ^ I am on / wiki / Main_Page $ /', function ($ world) {// throw new \ Behat \ Behat \ Exception \ Pending ( );}); или я думаю, что это может быть какая-то ошибка конфигурации с моей стороны. Большое спасибо. - person David Lin; 03.06.2011
comment
Я выяснил причину этой ошибки. Это произошло из-за неправильного регулярного выражения в определении шага. Определение шага для этой строки должно быть следующим: $ steps- ›Given ('/ ^ Я на \ / wiki \ / Main_Page $ /', function ($ world) ... чтобы рассматривать косую черту перед вики как просто косая черта, но не превращая 'w' в модификатор. Однако теперь, когда эта ошибка исчезла, я получаю новое сообщение об ошибке, в котором говорится, что: Ошибка: вызов неопределенного метода Behat \ Behat \ Environment \ Environment :: getSession в шагах / ajax.php в строке 12, где у меня $ world- ›getSession () -› wait (5000, $ ('. questions-results'). children (). length ›0); - person David Lin; 03.06.2011
comment
Просто установите последнюю версию Behat, Mink и следуйте ВСЕМ инструкциям по ссылке! - person everzet; 03.06.2011
comment
убедитесь, что ваши ymls отформатированы правильно, иначе у вас будут плохие времена. технология, которая его анализирует, очень чувствительна к пробелам и табуляциям - person branchgabriel; 08.01.2013