2014-12-14 4 views
1

Я стараюсь тестирующих вызов метода, которые принимают именованный аргумент, как это: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).

Любая помощь будет отличной.

Благодаря

+0

что полная ошибка? на какой строке это? –

+0

строка: @ search_task.search (запрос: params [: query]). Load сообщение: неправильное количество аргументов (0 для 1). – elf

ответ

0

Вызов согласовани таким же образом вызывается метод .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 
Смежные вопросы