Ich bin wirklich hier stecken. Ich habe ein Language
Modell, das in diesem Verfahren aktualisiert wird:Rails 5 Test reproduziert nicht das tatsächliche Verhalten auf PATCH
def update
@language = Language.find(params[:id])
if @language.update_attributes(language_params)
flash[:success] = 'Language information updated.'
redirect_to @language
else
@skill_errors = @language.errors
render 'edit'
end
end
Das gewünschte Verhalten für eine erfolgreiche Aktualisierung wiedergibt, wenn ich es auf meinem lokalen Server ausführen, Objekt aktualisiert wird, Blitz erscheint und Umleitung zu @language
passiert.
Im Test bekomme ich jedoch nur die 200: Success
Antwort, und das Objekt wird nicht aktualisiert. Hier ist der Testcode:
test 'should allow update when logged in as admin user' do
sign_in(@admin)
patch language_path(@ruby_language), params: { language: { name: 'Test'} }
assert_not flash.empty?
assert_redirected_to @ruby_language
@ruby_language.reload
assert_equal 'Test', @ruby_language.name
end
@admin
und @ruby_language
sind in Vorrichtungen definiert. Alle Behauptungen in diesem Test versagen, einschließlich des letzten, mit reload
. Meine Vermutung ist, dass es durch meine Verwendung von Devise
und/oder Kaminari
Edelsteinen einige Routing-Störungen geben könnte? Auf der anderen Seite sind meine Language
Routen sehr einfach: resources :languages, concerns: :paginatable
(das Anliegen ist hier für menschenlesbare URL-Formatierung). Bitte beachten Sie, dass alles wie gewünscht funktioniert, nur Tests scheitern aus irgendeinem Grund ... Vielen Dank im Voraus!
Fügen Sie 'puts @ response.body' hinzu, nachdem Sie die' patch'-Methode aufgerufen und die Ausgabe hier veröffentlicht haben. –