Ich schreibe einen Rspec-Controller-Test an einer der Update-Funktionen meines Modells. Das Modell, das ich teste, ist Order
.Rspec Controller-Test auf PUT-Methode korrekt ausführen
Wenn ich Controller-Test ausführen, sehe ich Order_Attributes werden jetzt nicht aktualisiert.
Im Folgenden finden Sie order_controller.rb:
before_action :set_order, only: [:show, :edit, :update, :destroy]
def update
if @order.update(order_params)
render json: @order, status: :ok, location: @order
else
render json: @order.errors, status: :unprocessable_entity
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_order
@order = Order.find(params[:id])
end
def order_params
params.permit(:order_type)
end
end
Controller spec Ich habe wie folgend:
let(:order) {
FactoryGirl.create(:order)
}
describe "PUT #update" do
context "valid attributes" do
it "changes order's attributes" do
put :update, id: order.id, order_params: FactoryGirl.attributes_for(:order, user_id: 19)
order.reload
expect(assigns(:order).user_id).to match(order.user_id)
end
end
end
Hier factory für den Auftrag Modell ist:
require 'faker'
FactoryGirl.define do
factory :order do
order_type Order.order_types[:serviceA]
association :user
before(:create) do |order|
order.user = FactoryGirl.create(:user)
end
end
end
Im Controller-Test Ich sehe, dass order_attributes nicht aktualisiert werden. Selbst wenn ich user_id auf 19 aktualisiere, wird es nicht wiedergegeben. Übergebe ich order_params falsch?
Wie sieht Ihre 'order_params' Methode im Controller aus? –
@ChrisPeters, ich habe aktualisiert. – JoHksi