Как вы запускаете один файл test / spec в RSpec? - PullRequest
260 голосов
/ 27 сентября 2008

Я хочу иметь возможность запускать тесты одного спецификационного файла & mdash; например, для одного файла, который я редактирую. rake spec выполняет все спецификации. Мой проект не является проектом Rails, поэтому rake spec:doc не работает.

Не знаю, имеет ли это значение, но вот моя структура каталогов.

./Rakefile
./lib
./lib/cushion.rb
./lib/cushion
./lib/cushion/doc.rb
./lib/cushion/db.rb
./spec
./spec/spec.opts
./spec/spec_helper.rb
./spec/db_spec.rb

Ответы [ 14 ]

363 голосов
/ 27 сентября 2008

Или вы можете пропустить рейк и использовать команду 'rspec':

rspec path/to/spec/file.rb

В вашем случае, я думаю, если ваш.

Если вы используете старую версию rspec, то это:

spec path/to/spec/file.rb
199 голосов
/ 27 сентября 2008

Необработанный вызов:

rake spec SPEC=spec/controllers/sessions_controller_spec.rb \
          SPEC_OPTS="-e \"should log in with cookie\""

Теперь выясните, как встроить это в ваш редактор.

116 голосов
/ 25 июля 2012

Этот вопрос старый, но он появляется в верхней части Google при поиске того, как запустить один тест. Я не знаю, является ли это недавним дополнением, но чтобы запустить один тест из спецификации, вы можете сделать следующее:

rspec path/to/spec:<line number>

где -line номер- это номер строки, которая содержит часть вашего теста. Например, если у вас были такие характеристики, как:

1: 
2: it "should be awesome" do
3:   foo = 3
4:   foo.should eq(3)
5: end
6:

Допустим, он сохранен в spec / models / foo_spec.rb. Тогда вы бы запустили:

rspec spec/models/foo_spec.rb:2

и он просто запустил бы эту спецификацию. На самом деле это число может быть от 2 до 5.

Надеюсь, это поможет!

58 голосов
/ 15 апреля 2011

Вы также можете использовать фактический текст теста * e * xample с -e!

Так для:

it "shows the plane arrival time"

вы можете использовать

rspec path/to/spec/file.rb -e 'shows the plane arrival time'
./scripts/spec path/to/spec/file.rb -e 'shows the plane arrival time'

тут грабли не нужны.

18 голосов
/ 17 августа 2010

из справки (spec -h):

-l, --line LINE_NUMBER           Execute example group or example at given line.
                                 (does not work for dynamically generated examples)

Пример: spec spec / runner_spec.rb -l 162

13 голосов
/ 29 сентября 2008

Если вы установили rspec как плагин, а не как гем, у вас не будет исполняемого файла spec.

В любом случае, все, что вам нужно сделать, это запустить файл с помощью ruby. Код rspec достаточно умен, чтобы запустить тесты для вас.

например:

ruby myclass_spec.rb
12 голосов
/ 15 декабря 2009

http://github.com/grosser/single_test позволяет делать такие вещи, как ..

rake spec:user          #run spec/model/user_spec.rb (searches for user*_spec.rb)
rake test:users_c       #run test/functional/users_controller_test.rb
rake spec:user:token    #run the first spec in user_spec.rb that matches /token/
rake test:user:token    #run all tests in user_test.rb that match /token/
rake test:last
rake spec:last
10 голосов
/ 14 апреля 2011

Ruby 1.9.2 и Rails 3 имеют простой способ запустить один файл спецификации:

  ruby -I spec spec/models/user_spec.rb

Пояснение:

  • ruby работает быстрее, чем команда rake
  • -I spec означает «включать каталог« spec »при поиске файлов»
  • spec/models/user_spec.rb - это файл, который мы хотим запустить.
7 голосов
/ 02 ноября 2017

Для запуска всех ваших файлов rspec: rspec

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

Для запуска один файл rspec: rspec 'path_to/spec.rb'

примечание: замените path_to / spec.rb на ваш путь. Кавычки необязательно.

Для запуска один rspec тест из одного файла: rspec 'path_to/spec.rb:7'

примечание:: 7 - номер строки, с которой начинается тест

5 голосов
/ 01 марта 2011

У меня были проблемы с тем, чтобы заставить работать любой из этих примеров, возможно, потому что пост старый и команды изменились?

После некоторого осмотра я обнаружил, что это работает:

rspec spec / models / user_spec.rb

Это будет запускать только один файл и обеспечивает полезный вывод в терминале.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...