Как установить пользовательский шаблон для формата HTML в Behat

Я попробовал в своем behat.yml и поместил шаблон в мой каталог /support, но не помогло.

    default:
      formatter:
        name:  html
        parameters:
          template_path: html.tpl

Есть идеи?


person lp1051    schedule 19.01.2012    source источник


Ответы (1)


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

PHP

namespace Behat\Behat\Formatter;
use Behat\Behat\Formatter\HtmlFormatter;

class MyHtmlFormatter extends HtmlFormatter {

    /**
     * The HTML template to use for formatting.
     * @return string
     */
    protected function getHtmlTemplate()
    {
        return '
          <div id="behat">
            {{content}}
          </div>
        ';
    }

    // You can override any other methods of HtmlFormatter that you want
    // to define custom behavior.
}

Затем обновите файл behat.yml, чтобы он указывал на ваш собственный класс.

behat.yml (необязательно — требуется только в том случае, если вы не используете --format в командной строке behat.)

default:
    formatter:
        name: Behat\Behat\Formatter\MyHtmlFormatter

Поведение

Наконец, запустите behat с помощью следующей команды:

behat --out out.html your_feature.feature

Если вы хотите указать этот форматтер напрямую, выполните:

behat --format Behat\\Behat\\Formatter\\MyHtmlFormatter --out o.html

Обратите внимание, что вам нужно \\ для правильной отправки имени класса.

person Brant Olsen    schedule 12.11.2012
comment
Спасибо за подсказку! Но, похоже, это не работает... Я сделал новый php-файл для пользовательского форматтера, добавил файл в загрузочную загрузку, обновил behat.yml, но, как я мог видеть, пользовательский форматтер никогда не вызывается. Работает ли это для вас? - person lp1051; 14.11.2012
comment
Я использую команду behat --format html --out test.feature.html --config behat.yml test.feature. Я не получаю никаких ошибок, но шаблон html всегда исходит от HtmlFormatter. - person lp1051; 14.11.2012
comment
Когда вы указываете --format html, вы заставляете его использовать класс HtmlFormatter. Вместо этого назовите это так behat --format Behat\\Behat\\Formatter\\MyHtmlFormatter --out o.html. - person Brant Olsen; 14.11.2012
comment
Потрясающе, вот оно! Большое спасибо за вашу помощь. Лук - person lp1051; 15.11.2012
comment
Кстати. он не работает без параметра --format Behat\\Behat\\Formatter\\MyHtmlFormatter. Не уверен, почему, так как я установил форматер в behat.yml, но это может быть для нового вопроса;) - person lp1051; 15.11.2012
comment
Или просто с помощью Formatter от Emuse :) - person kwoxer; 23.08.2016