Testando erro 500

43 views
Skip to first unread message

Bruno Azisaka Maciel

unread,
Nov 12, 2009, 12:46:31 PM11/12/09
to Rails-BR
Estou tentando encontrar uma forma de testar um erro 500.

Criei uma página de erro 500 personalizada. Eu consigo testa-la
adicionado um raise dentro de uma action. Mas isso não está correto,
imagino eu.

Alguém aqui já fez esse tipo de teste funcional? Erro 404 é mais
tranquilo de testar (só digitar um path qualquer), no caso eu
precisaria, talvez, executar um raise em algum método mas durante um
teste.

Idéias?

abraço,
Bruno Azisaka Maciel

G. Sobrinho

unread,
Nov 12, 2009, 12:50:18 PM11/12/09
to rail...@googlegroups.com
Simples. Cria um controller chamado error com a action error_500 com um raise

class ErrorController < ActionController::Base
  def error_500
    raise
  end
end

Isso resolve?

2009/11/12 Bruno Azisaka Maciel <br...@bubble.com.br>



--
Cordialmente,

Gabriel Sobrinho
Diretor de desenvolvimento

Hite - Comunicação Digital e Mídia Interativa
http://www.hite.com.br/

+55 31 8775 8378

Bruno Azisaka Maciel

unread,
Nov 12, 2009, 1:05:32 PM11/12/09
to rail...@googlegroups.com
Eu queria evitar ter que escrever código desnecessário. 

No momento estou tentando ver como vou sobrescrever o meu controller para fazer essa requisição como vc descreveu :)

abraço,
Bruno Azisaka Maciel

Vinicius Luiz

unread,
Nov 12, 2009, 1:16:58 PM11/12/09
to rail...@googlegroups.com
experimenta por assim no teu invironment.rb ou application_controller.rb ou qualquer outro lugar tipo um arquivo na pasta initializers

ActionController::Base.instance_eval do

  def error_500
    raise
  end
end

att,

Vinicius Luiz
Skype/Yahoo: vinicius.luiz
MSN: vinic...@hotmail.com
Gtalk: mcp.vi...@gmail.com
Twitter: http://twitter.com/vinicius_luiz
Blog: http://viniciusluizz.wordpress.com

----------------------------------------------

           Analista Desenvolvedor - TI                
CETAM Ltda. - Centro de Tecnologia da Amazônia

when there is no place in hell, the dead walked the earth!


2009/11/12 Bruno Azisaka Maciel <br...@bubble.com.br>

Marcio Aun Migueis

unread,
Nov 12, 2009, 1:40:03 PM11/12/09
to rail...@googlegroups.com
Bruno,


  Eu não vi, mas parece que tem a ver com seu problema.


Abraços

Marcio

2009/11/12 Vinicius Luiz <mcp.vi...@gmail.com>

Bruno Azisaka Maciel

unread,
Nov 12, 2009, 1:41:05 PM11/12/09
to rail...@googlegroups.com
Bom,

vamos lá para a solução que encontrei:

Primeiro passo: 
Adicionei esta linha no environments/test.rb

config.action_controller.consider_all_requests_local = false

Desta forma o Rails irá renderizar páginas inves de mostrar o relatório de erros (pois ele entende que não está trabalhando numa app em desenvolvimento)

Segundo passo:
Escrevi o seguinte example

describe PagesController, 'handling errors' do
  integrate_views

  it 'should render the error page' do
    rescue_action_in_public!
    get :show
    should render_template 'pages/error'
  end
end

notem o method rescue_action_in_public! , ele faz parte do ActionController::TestCase http://api.rubyonrails.org/classes/ActionController/TestCase.html#M000588

Ele causa um erro na aplicação, o qual você pode segurá-lo redefinindo o método rescue_action_in_public e, no meu caso, renderizando uma página customizada. 


abraço,
Bruno Azisaka Maciel

Reply all
Reply to author
Forward
0 new messages