2009-07-29 2 views
0

У меня есть тест, который не работает, даже если операция действительно работает, когда я тестирую ее в браузере. Что-то не так с моим тестом, похоже.Код работает, но тест не работает

Я использую 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 
+0

«Код работает, но тест не работает». Это как раз моя первая мысль, когда команда-испытатель называет: P – nik

+0

Что происходит с a.street1? – Steven

+0

Просто для уточнения моего последнего комментария; Я спрашиваю, с чего действительно возвращается a.street1, а не только то, что такое предположение. Как кто-то, кто тестирует, распечатывает ожидаемое значение и фактическое значение теста, может быть очень проницательным. – Steven

ответ

2

Я не могу видеть Params [: адрес], указанный в параметрах вы переходящие на ваши действия в тесте. Она смотрит на меня, как это должно быть:

put(:update, { 
     :id => addresses(:mary_publics_address).id, 
     :address => { :street1 => '123 Now St.' } 
     }, { :user_id => users(:stan).id}) 

Я подозреваю, что ваш street1 поле адреса назван правильно в вашей форме address[street1], поэтому он работает через браузер.

+0

Да, все. Благодарю. – Ethan

Смежные вопросы