Testando Sinatra com RSpec (dica para quem usa Rails Metal)

Por Willian Fernandes em 17/06/2010 na categoria blog

Após ler o post do Diego Carrion sobre como usar RSpec[bb] para testar uma aplicação Sinatra, lembrei que tive um problema com os testes quando trouxe a aplicação feita em Sinatra para uma outra feita em Rails[bb] usando Rails Metal.

Vou usar o exemplo do Carrion para mostrar o que precisei mudar para os testes rodarem dentro do Rails Metal. Se no Sinatra usamos o spec_helper.rb assim:

require File.join(File.dirname(__FILE__), '..', 'main.rb')
 
require 'spec'
require 'rack/test'
 
Spec::Runner.configure do |conf|
  conf.include Rack::Test::Methods
end
 
def app
  Sinatra::Application
end

No Rails Metal precisamos usar o arquivo spec_helper.rb normal, da forma como ele for gerado pelo RSpec.

A classe Api é um rails metal, mas nesse caso ela deve extender a classe Sinatra::Base (rails_root/app/metal/api.rb):

require 'sinatra'
 
# Allow the metal piece to run in isolation
require(File.dirname(__FILE__) + '/../../config/environment') unless defined?(Rails)
 
class Api < Sinatra::Base
  # Code
end

E no arquivo api_spec.rb definimos o método app assim:

require 'spec_helper'
 
describe "Api" do
  include Rack::Test::Methods
 
  def app
    Api.new
  end
 
  # code
end

No exemplo acima precisei fazer require ‘rack/test’ no spec_helper.rb. Para isso, basta instalar a gem rack-test.

Como você pode ver, com uma simples mudança você pode usar Sinatra com Rails e fazer seus testes com RSpec.

1 Comentário

Comentários

1# Tweets that mention WillianFernandes.com.br » Testando Sinatra com RSpec (dica para quem usa Rails Metal) -- Topsy.com disse em 18/06/2010 às 08:39:36

[...] This post was mentioned on Twitter by Willian Fernandes, Willian Fernandes. Willian Fernandes said: Testando Sinatra com RSpec (dica para que usa Rails Metal) http://goo.gl/fb/2Kb4c #blog [...]

Deixe Um Comentátio

*Campos obrigatórios