Что означает это заявление RSpec по умолчанию? - PullRequest
4 голосов
/ 09 сентября 2010
User.should_receive(:update_attributes).with({'these' => 'params'})

Что означает это утверждение? these нигде не обозначено как означающее.

Все утверждение таково:

  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

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

Ответы [ 2 ]

3 голосов
/ 09 сентября 2010

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

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

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

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

0 голосов
/ 11 июня 2012

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

...