Code funktioniert, aber der test schlägt fehl,
-
05-07-2019 - |
Frage
Ich habe einen test, der fehlschlägt, obwohl der Betrieb funktioniert tatsächlich, wenn ich es testen in dem browser.Etwas falsch mit meinem test, der wie folgt aussieht.
Ich bin mit Shoulda und Leuchten.
require 'test_helper'
class AddressesControllerTest < ActionController::TestCase
context 'on PUT to :update' do
setup do
put(:update, {
:id => addresses(:mary_publics_address).id,
:street1 => '123 Now St.'
}, { :user_id => users(:stan).id})
end
should 'update the Address' do
a = Address.find(addresses(:mary_publics_address).id)
assert(a.street1 == '123 Now St.', 'Attribute did not get updated.')
end
end
end
Schlägt fehl mit "Attribut nicht aktualisiert werden."
Hier ist der controller-code testen unter:
class AddressesController < ApplicationController
def update
@address = Address.find(params[:id])
@address.update_attributes!(params[:address])
render(:text => "Address with ID #{params[:id]} updated")
end
end
Lösung
Ich kann nicht sehen params[:address] angegeben, der Parameter, den Sie übergeben, um Ihre Aktion in den test.Es sieht für mich wie es sein sollte:
put(:update, {
:id => addresses(:mary_publics_address).id,
:address => { :street1 => '123 Now St.' }
}, { :user_id => users(:stan).id})
Ich vermute, Ihr street1
das Feld Adresse ist richtig benannt, in Ihrer form als address[street1]
das ist, warum es funktioniert über den browser.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow