Problema com Rspec no Controller

Amigos(as),

Deve ser algo bem idiota, mas porque essa espec não tá funfando? É muito simples!

describe PerfilsController do
  before(:all) do
    @perfil = Perfil.new(:id => 1, :login => 'admin', :senha => 'teste123', :nome => "Administrador")
  end  
  
  it "deve mostrar o usuário passado como parâmetro" do
    Perfil.should_receive(:find).with("1").and_return(@perfil)
    get(:controller => 'perfils', :action => 'show', :id => "1")
    response.should be_success
  end
end

class PerfilsController < ApplicationController

  def show
    @perfil = Perfil.find(params[:id])
  end

end

Está dando:

Spec::Mocks::MockExpectationError in ‘PerfilsController deve mostrar o usuÄ¡rio passado como parÄ¢metro’
<Perfil(id: integer, login: string, senha: string, nome: string, descricao: text, data_nasc: date, estado_civil: string,
created_at: datetime, updated_at: datetime) (class)> expected :find with (“1”) once, but received it 0 times
./spec/controllers/perfils_controller_spec.rb:10:

O código está no GitHub…

tenta:

get :show, :id => ‘1’

Diego você eh um gênio…

Mas fica a reflexão, qual a diferença entre:

get(:controller =&gt; 'perfils', :action =&gt; 'show', :id =&gt; &quot;1&quot;)

e

Nâo existe diferença, o modo que você está tentando chamar nâo existe, por isso nâo funciona :slight_smile:

o primeiro parâmetro é a action a ser chamada e o segundo é o hash com os parâmetros da chamada. O único que nâo funciona assim é o “xhr()” que começa com o método http a ser chamado.

Me parece que a primeira sintaxe esta errada, a definição do método é algo assim:

get(method_name, params ={})

eu confundí com o redirect…

pior que eu peguei isso de um exemplo da internet… não sei aonde… nem tinha notado que o método não existia

#fail :?