我正在尝试为我的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方法?
答案 0 :(得分:0)
由于您只是想查找辅助方法而不是测试帮助程序本身,因此您可以使用view
before { allow(view).to receive(:preview_url).and_return('image.gif') }
it 'some test' do
render
expect(rendered).to match /Expected Output/
end