J'ai essayé de plonger dans RSpec 2 mais ses spécifications de contrôleur générées automatiquement ne fonctionnent pas pour n'importe quelle version de RSpec 2 avec n'importe quelle version de Ruby ou n'importe quelle version de Rails. Peut-être qu'il me manque quelque chose d'évident?Quelqu'un peut-il me décrire ce que RSpec 2 fait dans ce domaine?
def mock_category(stubs={})
@mock_category ||= mock_model(Category, stubs).as_null_object
end
describe "GET show" do
it "assigns the requested category as @category" do
Category.stub(:find).with("37") { mock_category }
get :show, :id => "37"
assigns(:category).should be(mock_category)
end
end
C'est généré automatiquement à partir rails g scaffold Category
RSpec retourne ceci:
Failures:
1) CategoriesController GET show assigns the requested category as @category
Failure/Error: assigns(:category).should be(mock_category)
expected Category_1002, got nil
# ./spec/controllers/categories_controller_spec.rb:21
# /Library/Ruby/Gems/1.8/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:239:in `inject'
Pourquoi cette maquette/stub retour nil
?
Mise à jour
Ceci est de la méthode show de mon contrôleur:
def show
@category = Category.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @category }
end
end
Merci!
Je ne sais pas ce que '.as_null_object' fait ou pourquoi c'est là, mais il semble que ce ne devrait pas être là. Essayez de le supprimer. –
Pouvez-vous poster le contenu de la méthode d'index? – zetetic
@zetetic, je suis un idiot, j'ai posté le mauvais exemple. Celui ci-dessus est seulement légèrement différent. Y a-t-il une méthode que vous aimeriez voir? – Trip