2015-11-27 3 views
0

Как я могу получить Rspec или даже Ruby для чтения сообщения Faye? Они приходят через в журнале Фэй хорошо, но я не могу подключиться к Фей через Rspec:Faye and Ruby: есть Rspec читать журнал Faye или сообщения

it 'gets Faye message' do 
    EM.run do 
    client = Faye::Client.new('http://localhost:9292/faye') 
    sub = client.subscribe('/documents') do |message| 
     puts message 
    end 

    sub.callback do |message| 
     puts message 
    end 
    end 
end 

Это просто висит. Сообщения попадают в журнал Faye. Что я делаю не так?

ответ

0

Так что я решил свою проблему. Я отправлю свое решение здесь, если это поможет кому-то другому.

it 'generates a document process and gets a push response from faye' do 
    EM.run do 
    client = Faye::Client.new('http://localhost:9292/faye') 

    Thread.new { subject.perform(:generate, id) } 

    client.subscribe "/documents/#{id}/notify" do |response| 
     publication = client.publish("/documents/#{id}/notify", '0') 
     publication.callback do 
     if response != '0' 
      expect(response).to eq(id.to_s) 
      EM.stop 
     else 
      p "FAYE RESPONSE: #{response}" # diagnostic only 
     end 
     end 

     publication.errback { |error| p "FAYE RESPONSE: #{error.inspect}" } 
    end 
    end 
end 

Мой конец игры был просто получить Rspec получать сообщения, отправленные Фей из subject.perform... процесса. Миссия выполнена. Не самая аккуратная вещь в мире, но кто заботится.

1

http://www.rubydoc.info/github/eventmachine/eventmachine/EventMachine.run (Прочитано NOTE блок)

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

+0

Тест здесь не закончен каким-либо образом, выше было показано, как я пытаюсь заставить Ruby читать сообщения в канале Faye '/ documents'. –

+0

Я могу изменить тест, если нужно, чтобы он стал яснее, но просто _reading_ для меня достаточно канала. –

+0

Я предполагаю, что вы можете подписаться на данный канал и поместить результаты в массив. Когда вы закончите, вы сможете утверждать о содержании этого массива. – jfornoff