3

inherited_resources コントローラーの仕様を書こうとしています。rspec の mock_model を使用して、データベースとのすべての統合をモックすることにしました。残念ながら、次のエラーが発生するため、作成および更新アクションの仕様を作成できません: https://gist.github.com/936947 この問題について誰か助けてもらえますか?

4

2 に答える 2

4

私はflexmockを使って同じ問題を抱えていました。

update_attributes原因は、ルーティングの決定にメソッドを使用していないことです。resource.errorsが空かどうかをチェックします。

したがって、適切に応答させるには、errorsメソッドもモックアウトする必要があります。

lib/inherited_resources/base_helpers.rb の関連コード @248 行目は次のとおりです。

  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
于 2011-04-28T21:02:26.310 に答える
0

失敗メッセージは、コントローラー内から名前付きルートにアクセスできないことに関するものであるため、これが mock_model と関係があるかどうかはわかりません。実際のモデルを使用して同じ例を試しましたか?

于 2011-04-22T16:49:12.823 に答える