Тест контроллера Rspec не пройден - PullRequest
0 голосов
/ 23 сентября 2011

Я пытаюсь запустить такой тест:

 it "render form to update an bundle with a specific id" do
   bundle = mock_model(Bundle)
   Bundle.stub!(:find).with("1") { bundle }

   get :edit, :locale => "en", :id => 1
   Bundle.should_receive(:find).with("1").and_return(bundle)
 end

Код из контроллера:

class BundlesController < ApplicationController
  # GET /bundles
  # GET /bundles.json
  .....

  # GET /bundles/1/edit
  def edit
    @bundle = Bundle.find(params[:id])
  end
  .....
end

Но тест завершается неудачно с сообщением:

BundlesController Обновление пакетаВизуализация формы для обновления пакета с определенным идентификатором. Ошибка / Ошибка: Bundle.should_receive (: find) .with ("1"). and_return (bundle) () .find ("1") ожидается: 1 раз получено: 0 раз# ./spec/controllers/bundles_controller_spec.rb:60:in `блок (3 уровня) в '

Может кто-нибудь мне помочь?Спасибо!

1 Ответ

2 голосов
/ 23 сентября 2011

Здесь есть пара проблем, а может и больше, когда вы публикуете больше кода.

Прежде всего, вы настраиваете заглушки и ожидания на Bundle, а затем показываете нам кодвместо этого загружается Role.

Во-вторых, вы звоните #should_receive в конце теста.Этот метод устанавливает ожидание для кода, который идет после него в вашем тесте.Если у вас нет скрытого обратного вызова, который вы не показываете нам, это всегда будет неудачным.Обратный порядок.

Bundle.should_receive(:find).with("1").and_return(bundle)
get :edit, :locale => "en", :id => 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...