Sus expectativas para encontrar que no trabaja, pero es expectativa para find_by_id
-
02-10-2019 - |
Pregunta
Tengo este código del controlador:
# GET /cardsets/1
def show
@cardset = current_user.cardsets.find_by_id(params[:id])
end
Y este código de prueba RSpec (burlándose con Mocha):
# GET Show
context "on get to show" do
it "should assign cardset" do
@cardset = Factory(:cardset)
@profile = @cardset.profile
@profile.cardsets.expects(:find).once.returns(@cardset)
get :show, :id => @cardset.id
assigns[:cardset].should_not be_nil
end
end
Esta prueba falla con:
2)
Mocha::ExpectationError in 'CardsetsController for a logged in user on get to show should assign cardset'
not all expectations were satisfied
unsatisfied expectations:
- expected exactly once, not yet invoked: [#<Cardset:0x1032bb660>].find(any_parameters)
satisfied expectations:
- allowed any number of times, not yet invoked: ApplicationController.require_user(any_parameters)
- allowed any number of times, already invoked twice: #<CardsetsController:0x10336c578>.current_user(any_parameters)
Si cambio a la expectativa:
@profile.cardsets.expects(:find_by_id).once.returns(@cardset)
A continuación, los pases de prueba, ¿por qué este paso con find_by_id y no encontrar?
Solución
creo que esto se debe a que find
y find_by_id
son en realidad diferentes mensajes. Sus usos controlador find_by_id
, pero se están estableciendo el mensaje de esperanza a buscar find
.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow