2010-09-09 3 views
4
User.should_receive(:update_attributes).with({'these' => 'params'}) 

Что означает это утверждение? these не создается нигде как что-то значимое.Что означает эта инструкция RSpec по умолчанию?

Все утверждение заключается в следующем:

describe "with valid params" do 
    it "updates the requested user" do 
     User.should_receive(:find).with("37") { mock_user } 
     User.should_receive(:update_attributes).with({'these' => 'params'}) 
     put :update, :id => "37", :user => {'these' => 'params'} 
    end 

Я говорю это потому, что я получаю сообщение об ошибке:

unknown attribute: these 

Что исходит из вышеупомянутого сценария ..

ответ

3

Это говорит что метод update_attributes должен быть вызван в модели User с аргументом {'these' => 'params'} во время любого теста.

В основном следующий, как ожидается, произойдет во время выполнения:

User.update_attributes({'these' => 'params'}) 

Подробнее здесь: http://rspec.info/documentation/mocks/message_expectations.html

+0

Правильно, но что такое 'эти' и что такое' params'? – Trip

+2

Это просто пример хэша. Вы замените его на то, что ожидает ваш контроллер. Например, вы можете обновлять имя пользователя, поэтому это будет 'with ({: first_name =>" something ",: last_name => else)})' –

0

Вы не должны заменить хэш ({ 'эти' => 'Params'}). Подумайте об этом как о контракте. Я сказал, что когда я PUT, следующий мой хэш должен быть получен моей моделью объектов update_attributes. В следующей строке вы вызываете метод обновления, и контракт проверяется.

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