У меня была такая же проблема при использовании 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