1

私はこのアプリを持っています:

require 'sinatra/base'
require 'thin'

class WebService < Sinatra::Base
  get '/' do
    'hello'
  end
end

EM.run do
  EventMachine.add_periodic_timer(1) do
    puts 'hello'
  end

  Thin::Server.start(WebService)
end

テストスクリプトを書く必要があります。テストが実行されないため、通常のアプローチは機能しません。

class WebServiceTest < Test::Unit::TestCase
  include Rack::Test::Methods

  def app
    WebService
  end

  def test
    get '/'
    assert last_response.ok?
  end
end
4

1 に答える 1

0

EMがスレッドをブロックせずにWebアプリを要求できるように、Webアプリをイベントマシンコードから分離する必要があります。

webservice.rb:

require 'sinatra/base'

class WebService < Sinatra::Base
  get '/' do
    'hello'
  end
end

app.rb:

require 'thin'
require './webservice'

EM.run do
  EventMachine.add_periodic_timer(1) do
    puts 'hello'
  end

  Thin::Server.start(WebService)
end

webservice.rb次に、テストファイルで、テストするために要求できます。

require './webservice'

class WebServiceTest < Test::Unit::TestCase
  include Rack::Test::Methods

  def app
    WebService
  end

  def test
    get '/'
    assert last_response.ok?
  end
end
于 2012-11-24T05:53:45.800 に答える