2015-03-06 7 views
0

Вопрос прямолинейный, учитывая шаблон, который запускает несколько файлов *_spec.rb, делает before(:all) запускать один раз перед всеми файлами или перед каждым файлом? Я знаю, что before(:each) пробегает перед каждым примером, но я не понимаю, что такое другое.Когда точно выполняется rspec перед (: все)?

Если это помогает моему случаю использования, я хочу инициализировать экземпляр селена в before(:all) и войти на сайт. Я только хочу войти в систему один раз в начале прогона и уничтожить экземпляр селена в конце запуска, а не инициализировать/уничтожить для каждого запускаемого файла *_spec.rb.

Я собирался протестировать это, просто поставив оператор puts в блок before(:all), но он не печатает на экране, просто игнорирует вызов puts.

ответ

1

A before(:all) выполняется один раз для группы примеров, в которой он определен (например, описательный или контекстный блок). Для наглядности он псевдонимы, как before(:context) начиная с RSpec 3.

Это звучит, как вы после before(:suite)

+0

Да, я получил эту работу путем инициализации экземпляра селена в сфере RSpec.configure, войдя в внутри, прежде чем (: suite) и назначить его как переменную экземпляра внутри before (: all). На самом деле это довольно чистое решение. Благодаря! – Kylee

0

before(:all) будет запускаться один раз перед примерами в пределах заданного блока Describe.

Это поведение описано в RSpec Core 2.0 documentation. Согласно RSpec Core 3.2 documentation, before(:context) обеспечивает такую ​​же функциональность, как before(:all).

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