RSpec测试使用命名参数的方法

3

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

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
当我运行此代码时,出现错误信息:参数数量不正确(应为1个,实际为0个)。 需要帮助,请帮忙解决。 谢谢。

完整的错误信息是什么?它出现在哪一行? - Uri Agassi
代码行:@search_task.search(query: params[:query]).load错误信息:参数数量不正确(应为1个,实际为0个)。 - Édipo Féderle
2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
6

您可以像调用方法.with(query: "a")一样调用匹配器(matcher)。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,