문제

브라우저에서 테스트 할 때 작동이 실제로 작동하더라도 실패한 테스트가 있습니다. 내 테스트에 문제가 있습니다.

나는 dooks and fixtures를 사용하고 있습니다.

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
도움이 되었습니까?

해결책

테스트에서 동작에 전달하는 매개 변수에 지정된 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