Behat 3 с Symfony2, тесты API с использованием среды разработки

Похоже, что тесты Behat Api поражают среду разработки (создается папка кэша разработки, и она использует базу данных разработки).

Он без проблем создает тестовую базу данных и добавляет данные (метод BeforeScenario в FeatureContext).

Моя установка выглядит следующим образом:

Иметь фронт-контроллер app_test.php.

default:
    formatters:
        pretty: true
    autoload:
        '': %paths.base%/app/features/bootstrap
    suites:
        app_suite:
            type: symfony_bundle
            bundle: AppBundle
            contexts:
                - AppBundle\Features\Context\FeatureContext:
                    parameters:
                        base_url: http://mysite.dev
            mink_session: default
            mink_javascript_session: selenium2
    extensions:
        Behat\Symfony2Extension: ~
        Behat\MinkExtension:
            sessions:
                default:
                    symfony2: ~

Это: http://www.forouzani.com/installing-behat-mink-and-selenium2-in-symfony2.html, возможно, раньше работал с behat 2, но теперь я использую behat 3, поэтому он не работает должным образом!

Спасибо


person timhc22    schedule 12.03.2015    source источник
comment
Вы изменили dev на test в своем app_test.php? У вас есть тесты на селен? Похоже, они настроены на работу с фронт-контроллером по умолчанию (вместо mysite.dev). http://mysite.dev/app_test.php" rel="nofollow noreferrer">mysite.dev/app_test.php — если app_test.php не является передним контроллером по умолчанию для этого домена).   -  person Jakub Zalas    schedule 12.03.2015
comment
да, это было изменено на тест в app_test. ссылка, которую я добавил, имела следующее: расширения: Behat\Symfony2Extension\Extension: mink_driver: true ядро: env: test debug: true . что, похоже, не сработало для меня   -  person timhc22    schedule 12.03.2015
comment
я также пытался использовать /app_test.php в base_url, но, похоже, это не сработало :(   -  person timhc22    schedule 12.03.2015
comment
Вы должны настроить base_url для MinkExtension, см. github.com /Behat/MinkExtension/blob/master/doc/ Кроме того, обратите внимание, что если вы вызываете сеанс непосредственно в своих файлах контекста, вам необходимо самостоятельно добавлять базовый URL-адрес к любым вызываемым вами URL-адресам.   -  person Jakub Zalas    schedule 12.03.2015
comment
он просто игнорирует /app_test.php из любого base_url, который я добавляю (включая использование сервера symfony2): 127.0.0.1:8000/app_test.php   -  person timhc22    schedule 12.03.2015
comment
похоже, что guzzle удаляет /app_test.php из базового URL-адреса   -  person timhc22    schedule 13.03.2015
comment
похоже, это могло быть потому, что мне нужен был дополнительный / в конце базового URL!   -  person timhc22    schedule 13.03.2015


Ответы (1)


Если вы все еще не можете сделать это после следующих шагов, я постараюсь дать вам пошаговый пример, когда у меня будет время.

Обновить composer.json

"require": {
    "php": ">=5.4",
    "behat/behat": "3.0.14",
    "behat/behat-bundle": "1.0.0",
    "behat/symfony2-extension": "2.0.0",
    "behat/mink": "1.6.0",
    "behat/mink-extension": "2.0.1",
    "behat/mink-browserkit-driver": "1.2.0",
    "behat/mink-goutte-driver": "1.1.0",
    "behat/mink-selenium2-driver": "1.2.0"
},

Выполнить композитор

php composer.phar update

Создайте файл behat.yml.

default:
    extensions:
        Behat\Symfony2Extension: ~
        Behat\MinkExtension:
            base_url: http://behat-three.local/app_test.php
            browser_name: firefox
            sessions:
                goutte: # fast, CLI, browser, no javascript support
                    goutte: ~
                selenium2: # fast, CLI, opens up a browser
                    selenium2: ~
                symfony2: # bleeding fast, CLI, no browser
                    symfony2: ~
    suites:
        test_suite:
            type: symfony_bundle
            bundle: SiteMainBundle
            mink_session: selenium2
            contexts:
                - Site\MainBundle\Features\Context\FeatureContext:
                    output_path: build/behat/output
                    screen_shot_path: build/behat/screenshot

Инициируйте действие, чтобы создать соответствующие файлы и папки для работы.

php bin/behat --init --suite=test_suite

Затем убедитесь, что у вас есть app_test.php и обновите строку AppKernel.

# your_project/web/app_test.php

$kernel = new AppKernel('test', true);

Затем создайте config_test.yml со своими настройками, что-то вроде.

# your_project/app/config/config_test.yml

imports:
    - { resource: config_dev.yml }

framework:
    test: ~
    session:
        storage_id: session.storage.mock_file
    profiler:
        collect: false

web_profiler:
    toolbar: false
    intercept_redirects: false

swiftmailer:
    disable_delivery: true

doctrine:
   dbal:
       connections:
         hello:
           driver:   pdo_sqlite
           path:     %kernel.cache_dir%/test_hello.db
person BentCoder    schedule 13.03.2015