How to test background process in RSpec?

2019-08-20 11:41发布

问题:

Found this simple way to run a separate process in Sinatra: Run background process in Sinatra

get '/start_process'
  @@pid = Process.spawn('external_command_to_run')
end

How would you test this in RSpec?

Ruby 1.9.3.

回答1:

Extract a class which does the background processing and unit-test it. Then test expectation that your action invokes method on this class

Some "pseudocode":

before do
  MyWorker.should_receive(:perform)
end

specify { get :something }