Ruby on rails 如何使用mocha模拟Rails控制器中的类

Ruby on rails 如何使用mocha模拟Rails控制器中的类,ruby-on-rails,testing,mocking,mocha.js,Ruby On Rails,Testing,Mocking,Mocha.js,我很难理解如何在Rails中使用mocha mocking库进行特定类型的单元测试 我有一个控制器,它初始化助手库中的一个对象,然后对其调用一个函数。我的代码与 class ObjectsController < ApplicationController before_action :set_adapter def index response = @adapter.get_objects render json: response end priv

我很难理解如何在Rails中使用mocha mocking库进行特定类型的单元测试

我有一个控制器,它初始化助手库中的一个对象,然后对其调用一个函数。我的代码与

class ObjectsController < ApplicationController
  before_action :set_adapter

  def index
    response = @adapter.get_objects

    render json: response
  end

  private
    def set_adapter
      arg = request.headers["X-ARG"]
      @adapter = Adapter::Adapter.new(arg)
    end
end
class ObjectsController
在测试中,我希望模拟适配器以确保调用get_objects()方法。我试图找出实现此类测试的最佳方法,但我似乎一直在想如何模拟类中的现有对象


有人能帮我吗?

你可以这样做:

adapters = mock('object')
adapters.expects(:get_objects)
Adapter::Adapter.expects(:new).with('<X-ARG-HEADER-HERE>').returns(adapters)
# Run rest of test here to trigger calling the index method
adapters=mock('object')
adapters.Expected(:get_对象)
Adapter::Adapter.expected(:new).with(“”).returns(adapters)
#在此处运行测试的其余部分以触发调用index方法

希望能有所帮助。

似乎正在工作,但我想知道mock函数调用中的“object”是什么意思?这意味着您只是在模拟一个通用的ruby基对象。你可以这样嘲笑任何一门课。