ruby-on-rails - 具有命名参数的 RSpec 测试方法

标签 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)。

任何帮助都会很棒。

谢谢

最佳答案

以与调用方法相同的方式调用匹配器 .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

关于ruby-on-rails - 具有命名参数的 RSpec 测试方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27465595/

相关文章:

ruby-on-rails - 为 Rails 上的连接、限制、选择等(不是条件)的 SQL 片段安全地转义字符串

javascript - 取出图片标签 alt :missing. "image tag without an alt id is prefered and not showing missing"

ruby - RSpec 的主题和 let 有什么区别?什么时候应该使用它们?

ruby - 为什么 Ruby 给出错误 "point is not on curve"?

ruby-on-rails - 为 ruby​​onrails 编写测试

ruby - 当普通的 Ruby(不是 Rails)文件改变时自动运行 RSPec

ruby-on-rails - railstutorial.org,第 6 章。未知属性 : password

ruby-on-rails - 使用 jmeter 进行 Rails 应用负载测试

ruby-on-rails - Postgres 运算符(operator)无法使用 Paperclip 在 Rails 应用程序中工作

ruby - 条件 haml - if else 嵌套