Как определить наборы в rspec2 - PullRequest
2 голосов
/ 21 июля 2011

Как определить набор в rspec2.В самом деле, что такое набор?

Я хочу разбить свои спецификации на два набора и сбросить все между выполнением двух наборов (очистить тестовую базу данных, сбросить смотрителя и т. Д.).Я думаю, что я могу сделать это с блоком before (: suite).

Обновление: я понимаю, что пример - это что-то вроде:

 it "should be true" do
...
end

группа - это что-то вроде:

 describe Model do
...
end

Это понимание, кажется, подтверждается введением нескольких отладочных операторов в мой код.Но как определяется набор?Это просто все спецификации в папке спецификаций?В каком случае есть способ достичь того, что я пытаюсь сделать?

(Я действительно удивлен, что не могу найти это, прибегая к помощи или в ответах на предыдущие вопросы.)

Ответы [ 2 ]

1 голос
/ 21 июля 2011

Вы можете использовать отдельные описательные вызовы и в тех, которые вы можете делать до и после вызовов:

describe "some cool text for suite 1" do
  before do
    ...
  end

  it "some test in suite 1" do
    ...
  end

  ...more tests...

  after do
    ...
  end
end

describe "some cool text for suite 2" do
  ...same shape as above...
end

Это позволит вам разделить «настройки» и «разборки» для вашего набора связанных тестов. Затем вы можете добавить задачу rake для запуска тестов спецификаций с помощью набора

rspec spec/ -e"Suite 1"  # call this task spec:suite1 or something like that

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

1 голос
/ 21 июля 2011

На мой взгляд, в самой RSpec нет ничего похожего на набор. Я немного покопался и нашел следующее:

  • Кто-то опубликовал статью "Мои 7 лучших рекомендаций RSpec" , где вы найдете в разделе 6 "Создание нескольких наборов тестов для ускорения вашего рабочего процесса". Это объясняет, как разделить ваши спецификации на «наборы» в Rakefile и вызывать их по отдельности.
  • То, чего вы пытаетесь достичь, объясняется в книге Дэвида Челимского "Книга RSpec". Там, в главе 16.5, он объясняет Global Hooks (до, после, вокруг ...), где в качестве области действия может использоваться ключевое слово :suite. Значение:

Если: каждый, блок запускается перед каждым совпадением пример. Если: все, блок запускается один раз для каждой группы перед любым соответствием примеры были запущены. Если: suite, блок запускается один раз до запущены все примеры групп.

Таким образом, если вы поделите свои спецификации на группы примеров, вы можете контролировать, например before(:suite) do ... что нужно сделать для группы примеров.

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