Не выполняйте код перед тестом для каждого теста без использования блока before all - PullRequest
0 голосов
/ 23 января 2019

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

context 'context A' do
   context 'context A.1' do
     before(:each) do
        # Doing a lot of things and using let variables,...
     end

     it 'T1: test thing 1'
     it 'T2: test thing 2'
     it 'T3: test thing 3'
  end

  context 'context B.1' do
     before(:each) do
        # Doing a lot of things and using let variables,...
     end

     it 'T1: test thing 1'
     it 'T2: test thing 2'
     it 'T3: test thing 3'
  end
end

Если вы посмотрите на исполнение, оно выглядит примерно так:

до A.1 - T1 - до A.1 - T2 - до A.1 - T3 -до B.1 - T1 - ...

Но я хочу:

до A.1 - T1 - T2 - T3 - до B.1 - T1 -T2 - T3

Я пытался использовать before (: all), но я не могу его использовать, потому что я использую много переменных let.Вы получаете следующую ошибку, потому что let должен меняться в каждом контексте.

RuntimeError: let объявление var1, доступ к которому осуществляется через before(:context) hook:

Я мог бы объединитьвсе тесты в одном операторе it, но я не хочу этого, я хочу увидеть, какой тест paricalur не пройден.Единственное решение, которое я вижу, - это избавиться от всех переменных let, но это приведет к массивному блоку переменных экземпляра и множеству различных тестовых файлов, что приведет к большому количеству дублирующегося кода ...

Можетя получаю поведение, которое я хочу по-другому?Или я должен смотреть на вещи по-другому?

1 Ответ

0 голосов
/ 23 января 2019

но я не хочу этого, я хочу увидеть, какой тест по Particalur не пройден.

Это единственное, что мешает вам сделать это?Легко.

   context 'context A.1' do
     before(:each) do
        # Doing a lot of things and using let variables,...
     end

     it 'test all the things', aggregate_failures: true do
       ... 
     end

  end

Вы можете даже включить его глобально для всех спецификаций в вашем spec_helper.rb (это то, что я делаю).

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