[Bruno Mentges de Carvalho] Rails e Rspec sem ActiveRecord

Caso seus models não tenham representação no banco ou não seja ActiveResource, você precisará mudar umas coisinhas para fazer o rspec e rspec-rails funcionar. Este post se refere a: rails 2.3.2, rspec 1.2.2, rspec-rails 1.2.2, mas deve funcionar com algumas versões anteriores.

O primeiro passo é desabilitar o framework ActiveRecord no arquivo config/environment.rb

# config/environment.rb
Rails::Initializer.run do |config|
  config.frameworks -= [:active_record, :active_resource]
  # outras configuracoes aqui
end

Agora voce deve deletar o arquivo config/database.yml e comentar as seguintes linhas do arquivo spec/spec_helper.rb

# spec/spec_helper.rb
Spec::Runner.configure do |config|
  # config.use_transactional_fixtures = true
  # config.use_instantiated_fixtures  = false
  # config.fixture_path = RAILS_ROOT + '/spec/fixtures/'
  # nao comente outras configuracoes
end

Agora o rspec funcionará numa boa. Você também notará que não conseguirá usar o logger do rails como usava em seus models do ActiveRecord. Para utiliza-lo, basta usar a constante RAILS_DEFAULT_LOGGER. Exemplo:

# app/models/aluno.rb
class Aluno
  def ola
    RAILS_DEFAULT_LOGGER.info "falando ola mundo"
    #PPDD - Passei por aqui driven development
    RAILS_DEFAULT_LOGGER.debug "passei por aqui"
    "Ola mundo"
  end
end

Fica aqui a dica :)