带有命名参数的RSpec测试方法

时间:2014-12-14 01:54:10

标签: ruby-on-rails ruby rspec

我正在尝试测试接收命名参数的方法调用,如下所示:

expect(@fake_task_search).to receive(:search).with({:query=>"a"})
        @repo.all({query:  "a"})

和SUT

def all(params)
  @search_task.search(query: params[:query]).load
end

当我跑这个时,我收到了这个:有多少个参数(0表示1)。

任何帮助都会很棒。

由于

2 个答案:

答案 0 :(得分:4)

以与调用方法.with(query: "a")

相同的方式调用匹配器
class Repo
  def initialize(search_task)
    @search_task = search_task
  end

  def all(params)
    @search_task.search(query: params[:query])
  end
end

it "calls" do
  @search_task = SearchTask.new
  @repo = Repo.new(@search_task)

  expect(@search_task).to receive(:search).with(query: "a")

  @repo.all({query:  "a"})
end

答案 1 :(得分:-1)