Я пытаюсь написать спецификацию запроса для своего API. Я использую Rspec 3.
Я хочу заглушить метод в ApplicationHelper
. Я использую rabl для рендеринга моего API JSON.
это установка
#ApplicationHelper
module ApplicationHelper
...
def preview_url
end
...
end
Я вызываю метод preview_url
из моего файла rabl
. Проблема в том, что, поскольку я использую request spec
, у меня нет доступа к методу helper
, учитывая мой rspec view specs
Ниже приведена моя спецификация.
#spec/request/recipe_spec.rb
require 'rails_helper'
require 'spec_helper'
describe Recipe, 'when viewing the recipe', type: :request, focus: true do
...
before do
helper = Object.new.extend(ApplicationHelper)
allow(helper).to receive(:preview_url).and_return("image.gif")
end
it 'some test' do
...
end
end
Однако это не заглушит фактический метод в файле ApplicationHelper
.
После я безуспешно пытался
allow(ApplicationHelper).to receive(:preview_url).and_return("image.gif") -> doesn't work
allow_any_instance_of(ApplicationHelper).to receive(:preview_url).and_return("image.gif") -> will not work obviously because application helper is a module
Как я могу заглушить метод ApplicationHelper из моей спецификации запроса?