tl; dr:如何测试依赖于当前请求URI的帮助程序?
我正在尝试在我的Helper规范中对nav_link
方法进行测试,该方法在当前页面上提供了active
类的链接:
# app/helpers/application_helper.rb
module ApplicationHelper
def nav_link(link_text, link_path, options = {})
active = current_page?(link_path) ? 'active' : ''
link_to link_text, link_path, class: 'nav-item nav-link ' << active, **options
end
end
为了做到这一点,我需要为每个测试设置正确的请求,这样我就可以测试该方法是否提供了active
类的链接:
# spec/helpers/application_helper_spec.rb
describe ApplicationHelper do
describe "#nav_link" do
it 'sets the active link class' do
# "set here the request to users_path"
expect(helper.nav_link('Users', users_path)).to include('active')
end
end
到目前为止,我已尝试使用feature
和request
规范类型,但无法找到在helper
规范上实现此功能的方法,因此我可以测试隔离函数调用,它的返回。
使用active_link_to
gem实现了主动链接功能的解决方案,但仍然存在关于测试的问题。