2014-11-26 3 views
1

Я пытаюсь написать несколько приемочных тестов для laravel 4 с кодом и модулем селена.изменение env при приемочном тестировании приложение laravel с кодом и селеном

У меня возникли две проблемы.

  • Первая в том, что мое приложение работает в усадьбу бродячего VM и сервер Селен работает на хост-машины. Итак, есть ли простой способ запустить сервер selenium в vm и вызвать браузер на главной машине?

  • Моя вторая проблема заключается в том, что при тестировании используется фактическая база данных, потому что среда приложения laravel не настроена на тестирование. Очевидно, я хотел бы, чтобы он использовал тестовую базу данных и сбросил ее после каждого теста.

codeception.yaml

actor: Tester 
paths: 
    tests: app/tests 
    log: app/tests/_output 
    data: app/tests/_data 
    helpers: app/tests/_support 
settings: 
    bootstrap: _bootstrap.php 
    colors: true 
    memory_limit: 1024M 
    suite_class: \PHPUnit_Framework_TestSuite 
modules: 
    config: 
     Db: 
      dsn: 'sqlite:app/tests/_data/testdb.sqlite' 
      user: '' 
      password: '' 
      dump: app/tests/_data/dump.sql 

acceptance.yaml

class_name: AcceptanceTester 
modules: 
    enabled: [WebDriver,AcceptanceHelper] 
    config: 
     WebDriver: 
      url: 'http://app.dev' 
      browser: firefox 
      window_size: 1920x1024 
      wait: 10 

ответ

0

Самый простой способ запустить приемочные испытания в виртуальной машине использовать фантомные JS в режиме ghostdriver. Существует учебник здесь:

https://gist.github.com/antonioribeiro/96ce9675e5660c317bcc

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

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

Если вы хотите использовать ту же установку, вы можете автоматизировать выключение настроек с помощью файлов .env.

http://laravel.com/docs/4.2/configuration#protecting-sensitive-configuration

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

'host'  => $_ENV['DB_HOST'], 
'database' => $_ENV['DB_NAME'], 
'username' => $_ENV['DB_USERNAME'], 
'password' => $_ENV['DB_PASSWORD'], 

и ваш .env.php будет выглядеть так:

return array('DB_HOST' => 'hostname', 'DB_NAME' => '' ..etc 

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

http://robo.li/

$this->replaceInFile('.env.php') 
    ->from('production_db_name') 
    ->to('test_db_name') 
    ->run(); 

$this->taskCodecept()->suite('acceptance')->run(); 

.env файлы изменяются в Laravel 5, но это рабочий процесс все еще работает с минимальными изменениями.

http://mattstauffer.co/blog/laravel-5.0-environment-detection-and-environment-variables