코드는 작동하지만 테스트는 실패합니다
-
05-07-2019 - |
문제
브라우저에서 테스트 할 때 작동이 실제로 작동하더라도 실패한 테스트가 있습니다. 내 테스트에 문제가 있습니다.
나는 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]
그렇기 때문에 브라우저를 통해 작동하는 이유입니다.
제휴하지 않습니다 StackOverflow