質問

ブラウザでテストすると実際に動作するものの、テストが失敗します。私のテストで何かおかしい、のように見えます。

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] として正しく名前が付けられていると思われるため、ブラウザ経由で機能しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top