يعمل كود لكن فشل الاختبار
-
05-07-2019 - |
سؤال
ولدي اختبار هذا ما فشل على الرغم من أن العملية في الواقع يعمل عندما كنت اختباره في المتصفح. شيء خاطئ مع اختباري، يبدو.
وأنا باستخدام Shoulda والتجهيزات.
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
وفشل مع "سمة لم الحصول على تحديث".
وهنا هو رمز وحدة تحكم تحت الاختبار:
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
المحلول
وأنا لا يمكن أن نرى بارامس [: عنوان] المحددة في المعايير التي يتم تمريرها إلى العمل الخاص بك في الاختبار. يبدو لي مثل ذلك يجب أن تكون:
put(:update, {
:id => addresses(:mary_publics_address).id,
:address => { :street1 => '123 Now St.' }
}, { :user_id => users(:stan).id})
وأظن يدعى حقل العنوان street1
بشكل صحيح في النموذج الخاص بك كما address[street1]
وهذا هو السبب أنها تعمل من خلال المتصفح.
لا تنتمي إلى StackOverflow