-
Notifications
You must be signed in to change notification settings - Fork 217
Testing
Janko Marohnić edited this page Sep 21, 2015
·
19 revisions
See the spec/integration directory which contains tests for the example applications. You should add em-synchrony
to your Gemfile.
gem 'em-synchrony'
Use the goliath testing helpers:
require 'goliath/test_helper'
RSpec.configure do |c|
c.include Goliath::TestHelper, :example_group => {
:file_path => /spec\/integration/
}
end
Mocking a database adpater:
describe MyAPI do
def mock_mysql api
api.config['mysql'] = mock('mysql').as_null_object
end
it "my" do
with_api(MyAPI) do |a|
mock_mysql a
EM.stop
end
end
end
Testing a sub-route. A sub-route inherits its parent's middleware, so you can't test it in isolation if you need the parent middleware behavior. Instead you can test the parent route and use the :path option.
with_api(Parent) do
post_request(:path => '/sub') do ...
end
The :domain
option sends a request to a specific domain and port. The :domain
parameter can be used in conjunction with the :path
parameter.
with_api(Parent) do
post_request(:domain => 'foobar.localhost:42', :path => '/sub') do ...
end
You can specify a path for storage of log output by passing the path to the desired logfile, relative to the application root, as follows:
with_api(Parent, {:log_file => 'path/to_log.log'}) do
post_request(:path => '/sub') do ...
end