2014-01-03 2 views
2

Я хочу запустить тесты e2e, такие как транспортир (или другие тесты Selenium) на сервере разработки. Можно ли переключиться на другую тестовую базу данных на время тестирования? Я загружаю приспособления перед каждым испытанием. Что такое хорошая практика для такого рода тестирования - с node.js и mongo.db в backend, касающемся настройки базы данных?Можно ли переключить базу данных для проверки базы данных на node.js?

Заранее спасибо.

+0

node.js и mongodb являются базовыми компонентами, поэтому они не предлагают конфигурацию тестирования/разработки/производства, вы можете написать ее самостоятельно или найти хорошую доступную инфраструктуру. Могу ли я узнать, какие рамки используют ваш проект, курьерские, паруса, средний стек, йо ...? – damphat

+0

Я использую yoman - созданное угловое приложение с выражением. – avanti

+0

Может использовать конфигурационный файл ... http://stackoverflow.com/questions/5869216/how-to-store-node-js-deployment-settings-configuration-files – dfowler7437

ответ

0

Самый простой способ сделать это IMHO - это развернуть другой экземпляр вашего приложения с другой конфигурацией, а именно, подключиться к другой базе данных и прослушивать другой порт. Тогда вы можете указать на него Selenium. Теоретически FE приложения должен быть несовместимым с портами, однако, если это представляет проблему, nginx может оказать большую помощь.

Предположим, вы хотите его на порту 3333 и в домене test.myapp. Вот пример файла конфигурации для nginx.

server { 
    listen 80; 
    server_name test.myapp; 

    location/{ 
      proxy_pass http://localhost:3333; 
      proxy_set_header Host $host; 
      proxy_buffering off; 
    } 
} 

Конечно, вы хотели бы иметь другой сервер, определенный для вашего текущего сервера разработки. Просто промойте и повторите.

Обычно конфигурация в приложении nodejs выбирается на основе значения переменной среды NODE_ENV. Вы можете передать его, как это так, когда вы запустите приложение (я предполагаю, что здесь это сервер Linux):

$ NODE_ENV=test node app.js 

Тогда внутри вашего приложения вы легко получить к нему доступ:

var env = process.env.NODE_ENV 

Я надеюсь, что это помогает.

+0

Благодарим вас за ответ. Я использую heroku для размещения приложения. Это означало бы создание другого приложения вместе с db. Чтобы быть правдой, я надеялся, что это не единственное решение. – avanti

+0

Хммм ... Я немного смущен. Я думал, что идея состоит в том, чтобы использовать другую базу данных? Во всяком случае, обычно серверы dev (либо ящики, либо просто vhosts) отделены от тестовых серверов, поэтому вы можете протестировать определенную ветвь, например, кандидат на выпуск, в то время как разработка все еще продолжается. –

+0

В настоящее время мы имеем только две среды развертывания: dev и production. Поэтому, подумав об этом, я вижу два решения: добавление тестового сервера, как вы предлагаете, где интеграция и тесты e2e могут запускать или запускать все на dev-сервере. Во втором случае я удаляю базу данных перед интеграционными тестами и восстанавливаю после. Моя первая идея заключалась в том, чтобы использовать другую базу данных только для тестов, которые, по-видимому, невозможны (для тестов e2e). – avanti

Смежные вопросы