2015-02-10 3 views
0

Учитывая пример Синатра приложениеЗапуск двух тестов одновременно в RSpec/Rack :: Test/Sinatra

post '/1' do 
    sleep(1) until @2 
    0 
end 

post '/2' do 
    @2 = true 
    0 
end 

и тестовый пример RSpec

describe 'test' do 

    it 'does /1' do 
    post '/1' 
    expect(last_response.body) to eq?(0) 
    end 

    it 'does /2' 
    post '/2' 
    expect(last_response.body) to eq?(0) 
    end 

end 

Первый тест (it does /1) будет висеть, ожидая для/2.

Можно ли сообщить RSpec, чтобы не дождаться завершения теста №1 до начала теста №2? A.K.A, возможны ли асинхронные тесты в RSpec?

+0

Данное приложение не делает много смысла, так как переменные экземпляра не сохраняются между запросами. Но независимо от того, ответ на ваш вопрос - «использование потоков». –

ответ

1

Да. Самый простой способ состоит в использовании параллельных тестов перл:

Подобные камни подходящие для сервера CI:

Эти драгоценные камни - все bout распространение тестов по процессорам. Для вашего кода лучше всего подходят параллельные тесты.

Если вы открыты для использования Minitest (это потрясающе), тогда есть отличный параллелизм. «Minitest дает вам возможность обозначить, что некоторые или все ваши тестовые примеры могут работать одновременно, и, как указано в исходных комментариях, это может означать только одно: вы правы, а ваши тесты - потрясающие».

Смотрите этот блог, который объясняет это в деталях:

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

  • Нет связанных вопросов^_^