Ruby RSpe c определяет ловушки до / после только для одного контекста - PullRequest
1 голос
/ 16 января 2020

У меня есть следующая структура теста RSpe c:

RSpec.describe A do
  context C1 do
    it EX1a do
    end
    ....
    it EX1n do
    end
  end
  context C2 do
    it EX2a do
    end
    ...
  end
end

Теперь я бы определил ловушку, которая запускает настройку и завершение wordk только для примеров в контексте C1. Как я могу это сделать? Из моего понимания структурирования хуков , использование before(:context) будет выполняться один раз перед каждым контекстом (включая C2), тогда как before(:example) будет выполняться один раз перед каждым примером (включая EX2a), что не то, что я хочу.

У меня есть RSpe c 3.8

1 Ответ

3 голосов
/ 16 января 2020

Не совсем. Это зависит от того, где вы разместите before блоки. Когда вы помещаете их в контекст, подобный этому

RSpec.describe A do
  context C1 do
    before { do_something }

    it EX1a do
    end
    it EX1n do
    end
  end
  context C2 do
    it EX2a do
    end
  end
end

, обратный вызов before будет выполняться только перед выполнением EX1a и EX1n, но не перед EX2a.

Аналогично для before(:context) блоков. Цитата из документов: "before(:context) запускается только один раз, перед всеми примерами в группе" . Блок context определяет group.

...