У меня есть приложение Sinatra, которое работает внутри EventMachine. В настоящее время я принимаю пост-запрос данных JSON, откладываю хранение и возвращаю код состояния 200 OK. Отложенная задача просто помещает данные в очередь и увеличивает счетчик статистики. Код похож на:
class App < Sinatra::Base
...
post '/' do
json = request.body.read
operation = lambda do
push_to_queue(json)
incr_incoming_stats
end
callback = lambda {}
EM.defer(operation, callback)
end
...
end
Мой вопрос: как мне проверить эту функциональность? Если я использую Rack::Test::Methods
, то мне нужно добавить что-то вроде sleep 1
, чтобы убедиться, что отложенная задача завершена, прежде чем проверять очередь и статистику, чтобы мой тест мог выглядеть так:
it 'should push data to queue with valid request' do
post('/', @json)
sleep 1
@redis.llen("#{@opts[:redis_prefix]}-queue").should > 0
end
Любая помощь приветствуется!