コードは機能するが、テストは失敗する
-
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
&quot;属性が更新されませんでした&quot;で失敗します。
テスト対象のコントローラーコードは次のとおりです。
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
解決
テストのアクションに渡すパラメーターで指定されたparams [:address]が表示されません。それは次のように見えます:
put(:update, {
:id => addresses(:mary_publics_address).id,
:address => { :street1 => '123 Now St.' }
}, { :user_id => users(:stan).id})
street1
住所フィールドは、フォーム内で address [street1]
として正しく名前が付けられていると思われるため、ブラウザ経由で機能しています。
所属していません StackOverflow