J'essaie de corriger certains tests que j'ai écrits dans mon contrôleur de commentaires. A partir de maintenant, avec mes tests actuels je reçois cette erreur:Rspec Créer un post avec des paramètres imbriqués
Failure/Error: @outlet = Outlet.find(params[:comment][:outlet_id])
ActiveRecord::RecordNotFound:
Couldn't find Outlet with 'id'=
Voici un exemple de certains des tests
describe '#create' do
context 'with valid attributes' do
before :each do
@outlet = FactoryGirl.create(:outlet)
@user = FactoryGirl.create(:user)
@comment_params = FactoryGirl.attributes_for(:comment)
end
let(:create) { post :create, params: { outlet_id: @outlet.id, user_id: @user.id, comment: @comment_params } }
it "creates new comment" do
expect { create }.to change { Comment.count }.by(1)
end
it "increases the post comment count by 1" do
expect { create }.to change { @outlet.comments.count }.by(1)
end
it "increases user comment count by 1" do
expect { create }.to change { @user.comments.count }.by(1)
end
end
end
Je suis sûr que ce qui se passe à cause de ma create dans mes tests
let(:create) { post :create, params: { outlet_id: @outlet.id, user_id: @user.id, comment: @comment_params } }
Voici mon contrôleur commentaires créer une action
def create
@outlet = Outlet.find(params[:comment][:outlet_id])
@comment = @outlet.comments.build(comment_params)
@comment.user_id = current_user.id
if @comment.save
redirect_to(@outlet)
end
end
Je suis à peu près sûr que cela ne fonctionne pas, car l'ID de sortie qu'il recherche est un paramètre imbriqué dans le paramètre comments. Comment réparer mon test rspec pour qu'il recherche un paramètre imbriqué?
mis à jour avec exmaples de test –