2010-01-13 29 views
17

No tengo idea de cómo probar mi aplicación Sinatra. No acabo de correr¿Cómo se hacen las pruebas en Sinatra?

rubí

Eso no parece funcionar. Todos los archivos solo hablan sobre cómo escribir el contenido del archivo, pero no sobre cómo hacerlo funcionar.

Gracias

+0

Documentación oficial de Sinatra sobre pruebas: http://www.sinatrarb.com/testing.html – imwilsonxu

Respuesta

-1

debe ser tan simple como ruby your_app_name.rb. En realidad, esto se muestra en Sinatra homepage (abajo).

+1

Gracias por responder. Supongo que no estaba claro, ¿cómo puedo ejecutar el archivo de prueba Rack :: Test que creo? –

27

Debe ser lo suficientemente simple.

my_app.rb Dado:

require 'rubygems' 
require 'sinatra' 

get '/hi' do 
    "Hello World!" 
end 

Y my_app_test.rb:

require 'my_app' 
require 'test/unit' 
require 'rack/test' 

set :environment, :test 

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

    def app 
    Sinatra::Application 
    end 

    def test_hi_returns_hello_world 
    get '/hi' 
    assert last_response.ok? 
    assert_equal 'Hello World!', last_response.body 
    end 
end 

Usted debe asegurarse de haber instalado las gemas correctas:

gem install sinatra rake rack-test 

Ahora puede ejecutar su aplicación y pruebas como esta:

ruby my_app.rb 
ruby my_app_test.rb 
+0

Agradezco la solución. ¿Podría decirme por qué usamos el método 'aplicación' aquí? –

0

He publicado un small example basado en psyho's answer. También agregué compatibilidad con ActiveRecord, incluidos los accesorios de prueba.

que configuran rastrillo para ejecutar las pruebas:

# Rakefile 
require_relative './app' 
require 'rake' 
require 'rake/testtask' 
require 'sinatra/activerecord/rake' 

Rake::TestTask.new do |t| 
    t.pattern = "test/**/*_test.rb" 
end 

task default: :test 

Ahora se puede ejecutar las pruebas de la siguiente manera:

prueba
rake 

Un ejemplo es el siguiente:

require_relative '../test_helper' 

class BlogTest < ActiveSupport::TestCase 
    fixtures :blogs 

    def test_create 
    blog = Blog.create(:name => "Rob's Writing") 
    assert_equal "Rob's Writing", blog.name 
    end 

    def test_find 
    blog = Blog.find_by_name("Jimmy's Jottings") 
    assert_equal "Stuff Jimmy says", blog.tagline 
    end 
end 

I requiere este ayudante en cada archivo de prueba para cablear todo:

# test_helper.rb 
require_relative '../app' 
require 'minitest/autorun' 
require 'active_record' 
require 'rack/test' 

ActiveRecord::Base.establish_connection(:test) 

#Set up fixtures and such 
class ActiveSupport::TestCase 
    include ActiveRecord::TestFixtures 
    include ActiveRecord::TestFixtures::ClassMethods 
    include Rack::Test::Methods 

    def app 
    Sinatra::Application 
    end 

    self.fixture_path = 'test/fixtures' 
    self.use_transactional_fixtures = true 
    self.use_instantiated_fixtures = false 
end 
Cuestiones relacionadas