RSpec mock_model и inherited_resources - PullRequest
       23

RSpec mock_model и inherited_resources

3 голосов
/ 22 апреля 2011

Я пытаюсь написать спецификацию для контроллератека.Я решил смоделировать всю интеграцию с базой данных, используя rspec's mock_model.К сожалению, я не могу написать спецификацию для действия создания и обновления, потому что я получаю следующую ошибку: https://gist.github.com/936947 Может ли кто-нибудь помочь мне с этой проблемой?

Ответы [ 2 ]

4 голосов
/ 29 апреля 2011

У меня была такая же проблема при использовании flexmock.

причина в том, что он не использует метод update_attributes для принятия решения о маршрутизации. Он проверяет resource.errors, является ли он пустым.

Таким образом, чтобы заставить его реагировать должным образом, нам нужно также смоделировать метод errors.

Вот соответствующий код @line 248 в lib / inherited_resources / base_helpers.rb

  def respond_with_dual_blocks(object, options, &block) #:nodoc:
    args = (with_chain(object) << options)

    case block.try(:arity)
      when 2
        respond_with(*args) do |responder|
          blank_slate = InheritedResources::BlankSlate.new
          if object.errors.empty?
            block.call(responder, blank_slate)
          else
            block.call(blank_slate, responder)
          end
        end
      when 1
        respond_with(*args, &block)
      else
        options[:location] = block.call if block
        respond_with(*args)
    end
  end
0 голосов
/ 22 апреля 2011

Сообщения об ошибках касаются невозможности доступа к именованным маршрутам из контроллера, поэтому я не уверен, что это как-то связано с mock_model.Вы пробовали те же самые примеры, используя реальные модели?

...