Beginnend mit Rails 5 sind Zuweisungen (auch assert_template) veraltet. Derzeit ist der Controller-Test selbst nicht veraltet, sodass Zuweisungen verwendet werden können. Sie müssen jedoch ein Juwel namens Rails-Controller-Test installieren.
Dies ist jedoch nur eine Abhilfe für bestehende Projekte und es wird nicht empfohlen, Zuweisungen in neuen Projekten zu verwenden. (Ich weiß nicht, warum es so verrückt ist. Bitte lass es mich wissen, wenn du weißt: bete :)
stattdessen,
controller.instance_variable_get("@hoge")
Sie können die Instanzvariable mit abrufen.
Ich habe einen Teil des Tests des Passwort-Reset-Prozesses extrahiert, den ich kürzlich geschrieben habe.
password_resets_request_spec.rb
RSpec.describe 'PasswordResets', type: :request do
let(:user) { create(:user) }
describe 'Zugriff auf den Bearbeitungsbildschirm zum Zurücksetzen des Passworts' do
context 'Wenn die E-Mail-Adresse falsch ist' do
it 'Der Benutzer sollte zur Seite zum Zurücksetzen des Kennworts weitergeleitet werden' do
post password_resets_path, params: { password_reset: { email: user.email } }
user = controller.instance_variable_get('@user')
get edit_password_reset_path(user.reset_token, email: '')
expect(flash[:danger]).to be_truthy
follow_redirect!
expect(request.fullpath).to eq '/password_resets/new'
end
end
Im obigen Code wollte ich auf das Attribut reset_token zugreifen, sodass ich das Gefühl habe, eine Instanzvariable namens @user für die Aktion create zu erhalten.
Es ist etwas kurz, in letzter Zeit persönlich entwickelte Apps bereitzustellen. Beten Sie: Sobald die Bereitstellung abgeschlossen ist, schreibe ich wieder einen soliden Artikel! !! Vielen Dank.
Recommended Posts