Rspec макет службы и получить целое число - PullRequest
2 голосов
/ 30 октября 2019

Я хочу издать сервис, который будет возвращать целое число 1. В конечной точке это называется

CompanyNameFetcher.new(params[:filters][:company_name].downcase).call

и всю эту строку я хочу высмеять, чтобы получить 1

Это то, что у меня так далеко:

      let(:company_name_fetcher) do
        class_double CompanyNameFetcher
      end
      before do
        allow(company_name_fetcher).to receive(:new).and_return { 1 }
      end

С ошибкой

Ошибка / Ошибка: разрешить (company_name_fetcher). Получать (: новый) .and_return {1}

ArgumentError: неверное количество аргументов (задано 0, ожидается 1+)

1 Ответ

3 голосов
/ 30 октября 2019

Я хочу смоделировать службу, которая будет возвращать целое число 1. В конечной точке она называется

CompanyNameFetcher.new(params[:filters][:company_name].downcase).call

, и всю эту строку, которую я хочу смоделировать, чтобы получить 1

Вариант 1 - allow_any_instance_of

allow_any_instance_of(CompanyNameFetcher).to( 
  receive(:call).and_return(1)
)

Вариант 2 - заглушка конструктора

mock_fetcher = instance_double(CompanyNameFetcher)
allow(CompanyNameFetcher).to( 
  receive(:new).and_return(mock_fetcher)
)
allow(mock_fetcher).to rececive(:call).and_return(1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...